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