今までout変数をメソッド呼び出し手前で宣言する必要がありましたが、C#7からメソッド呼び出し時に宣言ができるようになりました。
出力変数宣言を確認するサンプルソースは以下のようになります。
static void Main(string[] args)
{
// 出力変数宣言(out-var)
Test001(out var x, out var y);
Console.WriteLine(x);
Console.WriteLine(y);
}
/// <summary>
/// 確認用メソッド(out)
/// </summary>
/// <param name="lhs">設定用変数1</param>
/// <param name="rhs">設定用変数2</param>
private static void Test001(out int lhs, out int rhs)
{
// 値を変数に対して設定する。
lhs = 1;
rhs = 2;
}
上記のソースでは、Test001メソッドを呼び出す際に宣言している「x」、「y」に値が格納されます。
値の破棄と組み合わせると随分ソースがスッキリする気がします。