2010-11-18 23 views
6

Esto parece una tarea sencilla, pero no consigo encontrar la sintaxis correcta. Actualmente tengo esto:Inicializando una matriz KeyValuePair

KeyValuePair<string, string>[] kvpArr = new KeyValuePair<string,string>[]; 

Sin embargo, esto parece funcionar:

KeyValuePair<string, string>[] kvpArr = new KeyValuePair<string,string>[10]; 

Pero no sé el tamaño de la matriz inicialmente. Sé que puedo usar una lista de KVP y probablemente lo haga, pero solo quería saber cómo y si esto realmente podría hacerse.

+2

¿Hay algún motivo por el que no esté utilizando un 'Diccionario' ... o es una pregunta teórica sobre la inicialización de matrices? – Bobby

+1

Es una pregunta teórica, pero también tendré entradas duplicadas. –

+0

Si desea funcionalidad de búsqueda y necesita manejar múltiples valores por clave, podría considerar usar la clase System.Linq.Lookup . Sin embargo es inmutable. Más información: http://msdn.microsoft.com/en-us/library/bb460184.aspx –

Respuesta

8

No, no puede hacer esto, porque una matriz siempre tiene un tamaño fijo. Si no especifica ese tamaño para comenzar, ¿qué tamaño esperaría usar? Usted tiene que especificar el tamaño en sí o el contenido (que permite inferir el tamaño). Por ejemplo:

int[] x = new int[10]; // Explicit size 
int[] y = new int[] { 1, 2, 3, 4, 5 }; // Implicit size 
int[] z = { 1, 2, 3, 4, 5 }; // Implicit size and type 

List<T> es sin duda su amigo para las colecciones en las que no conoce el tamaño para empezar.

7

¿No sería mejor usar

List<KeyValuePair<string, string>> 

Tenga una mirada en List Class

1

¿Qué tal esto?

var kvpArr = new List<KeyValuePair<string,string>>(); 
6

Las matrices son de tamaño fijo por definición. Puede especificar el tamaño como en su segundo ejemplo de código, o puede hacer que se infiere de la inicialización:

KeyValuePair<string, string>[] kvpArr = new KeyValuePair<string, string>[] 
{ 
    new KeyValuePair<string, string>(...), 
    new KeyValuePair<string, string>(...), 
    ... 
} 

Si desea una estructura de longitud variable, le sugiero que utilice el List<T>.

Para obtener más información acerca de las matrices, consulte el C# programming guide.

+0

Te falta un punto y coma :) – 8bitcartridge