如何使用集合初始值设定项初始化字典(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
的对象初始值设定项,最外层的大括号中的是要添加到 students
Dictionary<TKey,TValue> 的键/值对的初始值设定项。 最后,字典的整个集合初始值设定项被括在大括号中。 在第二个初始化中,左侧赋值是键,右侧是将对象初始值设定项用于 StudentName
的值。