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?