C# 7.0ならoutパラメーターで変数宣言できるぞ!

Visual Studio 2017で利用できるようになったC# 7.0で、outパラメーターを持つメソッドの書き方が簡略化できるようになりました。

outパラメーターを持つメソッドを使う場合、通常ではあらかじめ変数を宣言していなくてはいけませんでした。

using System;

namespace OutParamTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string test = "55555";
            int result = 0;
            if (int.TryParse(test, out result))
            {
                Console.WriteLine("{0}", result);
            }
            Console.WriteLine("{0}", result);
        }
    }
}

ところが、C# 7.0からはoutパラメータ内で変数宣言ができるようになりました。つまり、事前の変数宣言が不要になったということです。これにより1行節約できます

using System;

namespace OutParamTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string test = "55555";
            if (test == "55555")
            {
                if (int.TryParse(test, out int result))
                {
                    Console.WriteLine("{0}", result);
                }
                Console.WriteLine("{0}", result);   // ifの外でもifと同じレベルなら参照可能。
            }
            //Console.WriteLine("{0}", result); スコープ外なのでエラーとなる!
        }
    }
}

また、outパラメーターに指定する変数が長い名前のクラスだった場合、クラス名を書かなくてはいけませんでしたが、この機能のおかげでvarが利用でき、コードの簡略化ができます。

if文の中で使ってもif文と同じスコープレベルなので、if文のあとでも使うことができます

なお、Visual Studio 2017では、従来のやり方で行っていると、スクロールバーにグレーのマークが表示されます。そのグレーマーク部分を見てみるとグレーの破線が表示され、エラー一覧にはメッセージレベルで「変数の宣言をインライン化できます」と表示されます。

TryParseなどでよく使うので、たかが1行されど1行です。

Follow me!

Feedlyで新着記事をチェックしよう!

Feedlyでフォローしておけば、新着記事をチェックすることができます。ぜひ、この機会にFeedlyに追加しておきましょう。