C# 2.0 以降の新機能を一つづつ確認していきます。
以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きます。
タプル (Tuples)
https://docs.microsoft.com/ja-jp/dotnet/csharp/tuples
複数の値を 1 つのオブジェクトに簡単にパッケージできる。
{ // 変数/定数をまとめられる
string text;
int length;
(text, length) = ("saitama", 7);
Console.WriteLine($"{text}, {length}"); // saitama, 7
}
{ // 変数宣言と同時でもよい
(string text, int length) = ("saitama", 7);
Console.WriteLine($"{text}, {length}"); // saitama, 7
}
{ // 型推論
var (text, length) = ("saitama", 7);
Console.WriteLine($"{text}, {length}"); // saitama, 7
}
{ // タプルの変数
(string text, int length) t = ("saitama", 7);
Console.WriteLine($"{t.text}, {t.length}"); // saitama, 7
}
{ // タプルの変数 (フィールド名なしでも Item1、Item2...で値にアクセス可能)
(string, int) t = ("saitama", 7);
Console.WriteLine($"{t.Item1}, {t.Item2}"); // saitama, 7
}
// メソッドの戻り値でも可能 (フィールド名付き/なし可能)
static (string, int) MethodA() => ("saitama", 7);
static (string text, int length) MethodB() => ("saitama", 7);