如何使用集合初始值设定项初始化字典(C# 编程指南)

Dictionary<TKey,TValue> 包含键/值对集合。 其 Add 方法采用两个参数,一个用于键,一个用于值。 若要初始化 Dictionary<TKey,TValue> 或其 Add 方法采用多个参数的任何集合,一种方法是将每组参数括在大括号中,如下面的示例中所示。 另一种方法是使用索引初始值设定项,如下面的示例所示。

示例

在下面的代码示例中,使用类型 StudentName 的实例初始化 Dictionary<TKey,TValue>。 第一个初始化使用具有两个参数的 Add 方法。 编译器为每对 int 键和 StudentName 值生成对 Add 的调用。 第二个初始化使用 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}");
        }
    }
}

请注意,在第一个声明中,集合中的每个元素有两对大括号。 最内层的大括号中的是 StudentName 的对象初始值设定项,最外层的大括号中的是要添加到 studentsDictionary<TKey,TValue> 的键/值对的初始值设定项。 最后,字典的整个集合初始值设定项被括在大括号中。 在第二个初始化中,左侧赋值是键,右侧是将对象初始值设定项用于 StudentName 的值。

请参阅