Como fazer com que a inicialização de array inline funcione como, por exemplo, Inicialização do dicionário?
Por que é possível inicializar umDictionary<T1,T2>
como isso:
var dict = new Dictionary<string,int>() {
{ "key1", 1 },
{ "key2", 2 }
};
... mas não inicializar, digamos, uma matriz deKeyValuePair<T1,T2>
objetos exatamente da mesma maneira:
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."
Eu percebo que eu poderia fazer o segundo exemplo funcionar apenas escrevendonew KeyValuePair<string,int>() { "key1", 1 }
, etc para cada item. Mas eu estou querendo saber se é possível usar o mesmo tipo de sintaxe concisa que é possível no primeiro exemplo.
Se não for possível, então o que faz oDicionário tipo tão especial?