コレクション初期化子
コレクション初期化子は、C# 3.0から使える初期化構文です。
var d = new Dictionary<string, int>
{
{ "太郎", 90},
{ "次郎", 80},
{ "花子", 95},
};
コレクション初期化子はAddメソッドへ変換されます。
上記のコードは、次のコードと同じ意味です。
var tmp = new Dictionary<string, int>();
tmp.Add("太郎", 90);
tmp.Add("次郎", 80);
tmp.Add("花子", 95);
var d = tmp;
インデックス初期化子
インデックス初期化子は、C# 6.0から使える初期化構文です。
var d = new Dictionary<string, int>
{
["太郎"] = 90,
["次郎"] = 80,
["花子"] = 95,
};
インデックス初期化子はインデクサによるアクセスに変換されます。
var tmp = new Dictionary<string, int>();
tmp["太郎"] = 90;
tmp["次郎"] = 80;
tmp["花子"] = 95;
var d = tmp;
そのため、インデクサがあればDictionaryでなくても使用できます。
class Sample
{
public string this[string key] { get => ""; set { } }
}
var s = new Sample
{
["key2"] = "Key2",
["key3"] = "Key3",
};
また、プロパティへの代入と一緒に使用できます。
class Sample
{
public string Key1 { get; set; }
public string this[string key] { get => ""; set { } }
}
var s = new Sample
{
Key1 = "key1",
["key2"] = "Key2",
["key3"] = "Key3",
};