Почему возможно инициализировать Dictionary<T1,T2>
следующим образом:
var dict = new Dictionary<string,int>() {
{ "key1", 1 },
{ "key2", 2 }
};
... но не инициализировать, скажем, массив объектов KeyValuePair<T1,T2>
точно так же:
var kvps = new KeyValuePair<string,int>[] {
{ "key1", 1 },
{ "key2", 2 }
};
// compiler error: "Array initializers can only be used in a variable
// or field initializer. Try using a new expression instead."
Я понимаю, что я мог бы сделать второй пример работы, просто написав new KeyValuePair<string,int>() { "key1", 1 }
и т.д. для каждого элемента. Но мне интересно, можно ли использовать тот же тип сжатого синтаксиса, который возможен в первом примере.
Если это невозможно, то что делает тип словаря таким особенным?