C# の out 変数
C# の out 変数 (out variables) について説明します。
C# 6.0 までは、out パラメータ修飾子 (out parameter modifier) がついた引数にパラメータを渡すときには、変数を事前に宣言する必要がありました。
例えば次の例では、out パラメータをもつ GetEmployee メソッドに変数を渡す前に string 型の n と t、int 型の a を宣言しています。
using System;
class Program
{
static void Main(string[] args)
{
string n, t;
int a;
GetEmployee(out n, out a, out t);
Console.WriteLine($"RESULT: {n}, {a}, {t}");
}
public static void GetEmployee(
out string name,
out int age,
out string title)
{
name = "Hanako Yamada";
age = 30;
title = "Manager";
}
}
しかし、C# 7.0 では、上記のように事前に宣言する必要はなくなりました。
out パラメータに変数を渡すと同時に、変数を宣言することが可能になりました。
// string n, t;
// int a;
GetEmployee(out string n, out int a, out string t);
また、もし受け取る値が不要の場合は、_ (アンダースコア) を使うことができます。
次の例では、呼び出し側では三つ目の引数が不要として、_ を渡しています。
GetEmployee(out string n, out int a, out _);
これによって、不要な変数を宣言すること自体、必要がなくなりました。