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