コレクション初期化子を使用してディクショナリを初期化する方法 (C# プログラミング ガイド)

Dictionary<TKey,TValue> にはキーと値のペアのコレクションが含まれています。 その Add メソッドは、それぞれキーと値に対する 2 つのパラメーターを受け取ります。 Add メソッドが複数のパラメーターを受け取る Dictionary<TKey,TValue> またはコレクションを初期化する 1 つの方法は、次の例に示すように、各パラメーターのセットを中かっこで囲むことです。 もう 1 つのオプションは、インデックス初期化子を使用することです。これも次の例に示されています。

次のコード例では、Dictionary<TKey,TValue> が型 StudentName のインスタンスで初期化されています。 最初の初期化では、Add メソッドを 2 つの引数と共に使用します。 コンパイラにより、int キーと StudentName 値の各ペアに対して、Add への呼び出しが生成されます。 2 回目の初期化では、Dictionary クラスのパブリック読み取り/書き込みインデクサー メソッドを使用します。

public class HowToDictionaryInitializer
{
    class StudentName
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int ID { get; set; }
    }

    public static void Main()
    {
        var students = new Dictionary<int, StudentName>()
        {
            { 111, new StudentName { FirstName="Sachin", LastName="Karnik", ID=211 } },
            { 112, new StudentName { FirstName="Dina", LastName="Salimzianova", ID=317 } },
            { 113, new StudentName { FirstName="Andy", LastName="Ruth", ID=198 } }
        };

        foreach(var index in Enumerable.Range(111, 3))
        {
            Console.WriteLine($"Student {index} is {students[index].FirstName} {students[index].LastName}");
        }
        Console.WriteLine();		

        var students2 = new Dictionary<int, StudentName>()
        {
            [111] = new StudentName { FirstName="Sachin", LastName="Karnik", ID=211 },
            [112] = new StudentName { FirstName="Dina", LastName="Salimzianova", ID=317 } ,
            [113] = new StudentName { FirstName="Andy", LastName="Ruth", ID=198 }
        };

        foreach (var index in Enumerable.Range(111, 3))
        {
            Console.WriteLine($"Student {index} is {students2[index].FirstName} {students2[index].LastName}");
        }
    }
}

最初の宣言のコレクションの各要素の中かっこの 2 つのペアに注目してください。 最も内側の中かっこは StudentName のオブジェクト初期化子を囲み、最も外側の中かっこは、studentsDictionary<TKey,TValue> に追加されるキーと値のペアの初期化子を囲んでいます。 最後に、ディクショナリのコレクション初期化子全体が中かっこで囲まれています。 2 回目の初期化では、代入の左辺はキーで、右辺は StudentName のオブジェクトの初期化子を使用する値です。

関連項目