◆ new Dictionary<int, int>{ {1, 2} } 形式はプロパティの初期化と一緒に書けない
◆ new Dictionary<int, int>{ [1] = 2 } 形式なら書ける

KeyValue のオブジェクト初期化子は

var value = new Dictionary<int, int>
{
{1, 2},
};



var value = new Dictionary<int, int>
{
[1] = 2,
};

の 2 種類があります
下側はインデックス初期化子と言って C# 6.0 からの機能です

下のほうが新しい分使いやすいですが 値のペアとして書く場合は 上のほうが見やすいケースもあるのでその場に応じて使い分けていました
ですが 上の書き方だとプロパティと一緒に初期化するときに制限があるようです

一緒に初期化することはめったにないのですが 必要になったのでやってみたら下の書き方じゃないとダメでした

Dictionary にプロパティをつけたクラスを定義します
class D : Dictionary<string, string>
{
public bool flag {get; set;}
}

new D
{
flag = true,
["key1"] = "value1",
["key2"] = "value2",
}
OK

new D
{
flag = true,
{"key1", "value1"},
{"key2", "value2"},
}
エラー

並びを変えてプロパティを後にしても変わらずエラーです

プロパティを書かなければ問題なく動きます
new D
{
{"key1", "value1"},
{"key2", "value2"},
}

旧式の書き方でもプロパティの初期化と共存させることってできないのかな