Jak sprawić, aby inicjowanie tablicy inline działało jak np. Inicjalizacja słownika?

Dlaczego można zainicjować aDictionary<T1,T2> lubię to:

var dict = new Dictionary<string,int>() { 
    { "key1", 1 },
    { "key2", 2 }
};

... ale nie inicjować, powiedzmy, tablicyKeyValuePair<T1,T2> obiekty dokładnie w ten sam sposób:

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."

Zdaję sobie sprawę, że mógłbym sprawić, by drugi przykład działał po prostu piszącnew KeyValuePair<string,int>() { "key1", 1 }, itp. dla każdego przedmiotu. Zastanawiam się jednak, czy możliwe jest użycie tego samego rodzaju zwięzłej składni, która jest możliwa w pierwszym przykładzie.

Jeśli nie jest to możliwe, to co sprawia, żeSłownik typ tak wyjątkowy?

questionAnswers(6)

yourAnswerToTheQuestion