Tuple 複数の値をひとまとめ

基本文法

タプル型

C#7で追加された機能
.NET 4.7版以前の場合はSystem.ValueTupleをNugetする必要あり
複数の値をひとまとめにするための匿名の構造体のようなもの。
メソッドから複数の値を返す場合に数多の構造体定義を行う手間が省ける
        static void Main(string[] args)
        {
            // フィールド名あり
            var menber1 = (ID: 10, Name: "sato");

            // フィールド名は省略可
            var menber2 = (20, "saito");

            // 個々の値の参照 フィールド名指定の場合
            var ret1 = GetMember(30);

            int id1 = ret1.ID;
            string name1 = ret1.Name;

            // 個々の値の参照 フィールド名無指定の場合
            // Item[N]という名前が自動で付与される
            var ret2 = GetSomething(40);
            int id2 = ret2.Item1;
            string name2 = ret2.Item2;
        }

        // IDと名前を返すメソッド
        static (int ID, string Name) GetMember(int id) => (30, "tanaka");

        // フィールド名無指定の場合
        static (int,string) GetSomething(int number) => (40, "yamada");

タプルクラス

こっちは.NET 4.0から導入されてます
特定の数と要素とからなる匿名の構造体を生成するためのクラス
        static void Main(string[] args)
        {
            // 型を明示的に指定してもよい
            Tuple<int, string> menber1 = Tuple.Create<int, string>(50, "ito");

            int id1 = menber1.Item1;
            string name1 = menber1.Item2;

            // 型は省略でもよい コンパイラにより推量されるので
            var member2 = Tuple.Create(60, "sasaki");

            int id2 = member2.Item1;
            string name2 = member2.Item2;
        }