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行です。