C# 7.0以降、VB15.3以降では、上記のJavaScriptコードのような記述ができるタプルが構文としてサポートされています。 これにより、Tuple型を使わなくても、複数のスカラー値をタプルで返したり、タプルで返される戻り値を変数(スカラー値)に展開することができます。 基本的にはTuple型と同じですが、この構文では格納されている値に対して変数と同様に任意の名前をつけることができるようになっています。
複数の戻り値(タプル)をスカラー値に展開する構文 C# 7.0
using System;
class Sample {
// 引数で与えられた配列の合計と平均を同時に返すメソッド
static (long, double) SumAvr(int[] arr)
{
var sum = 0L;
foreach (var val in arr) {
sum += val;
}
var avr = sum / (double)arr.Length;
// 複数の値をひとまとめにして返す
return (sum, avr);
}
static void Main()
{
// 呼び出し側で戻り値を展開する
(long sum, double avr) = SumAvr(new int[] {2, 5, 3, 8, 4});
Console.WriteLine("合計 = {0}", sum);
Console.WriteLine("平均 = {0}", avr);
}
}
実行結果
合計 = 22 平均 = 4.4