¿Por qué es posible inicializar una Dictionary<T1,T2>
así:Cómo hacer que la inicialización de matriz en línea funcione, como p. ¿Inicialización del diccionario?
var dict = new Dictionary<string,int>() {
{ "key1", 1 },
{ "key2", 2 }
};
... pero no para inicializar, por ejemplo, una serie de objetos KeyValuePair<T1,T2>
exactamente de la misma manera:
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."
que se dan cuenta que podría hacer que el segundo ejemplo funcione simplemente escribiendo new KeyValuePair<string,int>() { "key1", 1 }
, etc. para cada elemento. Pero me pregunto si es posible usar el mismo tipo de sintaxis concisa que es posible en el primer ejemplo.
Si no es posible, entonces ¿qué hace que el Diccionario tipo tan especial?
me gusta hacia dónde va esta pregunta, pero parece sin refinar. Me gusta la idea de centrarme en 'List' vs.' Dictionary' (para sacar el Array del camino), aunque el mensaje de error podría ser diferente. (Musing:?. ¿Cómo se sabe cómo crear un KVP de '{a, b}' ;-) –
(no creo que me dieron el título del todo bien, sin embargo) –
@pst sí, creo que' me estoy acercando al núcleo de lo que estoy preguntando. No soy muy bueno para escribir preguntas ... – McGarnagle