C 6 索引初始化器
从 C#6 开始,可以通过在方括号中指定要分配的索引,然后是等号,后跟要分配的值来初始化带有索引器的集合。
字典初始化
使用 Dictionary 的语法示例:
var dict = new Dictionary<string, int>
{
["key1"] = 1,
["key2"] = 50
};
这相当于:
var dict = new Dictionary<string, int>();
dict["key1"] = 1;
dict["key2"] = 50
在 C#6 之前执行此操作的集合初始化程序语法是:
var dict = new Dictionary<string, int>
{
{ "key1", 1 },
{ "key2", 50 }
};
这对应于:
var dict = new Dictionary<string, int>();
dict.Add("key1", 1);
dict.Add("key2", 50);
因此,功能上存在显着差异,因为新语法使用初始化对象的索引器来分配值而不是使用其 Add()
方法。这意味着新语法只需要一个公开可用的索引器,并且适用于任何具有一个索引器的对象。
public class IndexableClass
{
public int this[int index]
{
set
{
Console.WriteLine("{0} was assigned to index {1}", value, index);
}
}
}
var foo = new IndexableClass
{
[0] = 10,
[1] = 20
}
这将输出:
10 was assigned to index 0
20 was assigned to index 1