2012-03-31 13 views
11

Estoy tratando de inicializar un diccionario con elementos de cadena como llaves y int [] elementos como los valores, de la siguiente manera:Crear un diccionario con matrices como valores

System.Collections.Generic.Dictionary<string,int[]> myDictionary; 
myDictionary = new Dictionary<string,int[]>{{"length",{1,1}},{"width",{1,1}}}; 

Pero el depurador sigue diciendo: "símbolo inesperado '{' ".

¿Podría decirme qué ocurre con el código anterior?

¡Gracias!

Respuesta

8

no estoy seguro para C#, pero las siguientes obras en Java, por ejemplo:

en lugar de

{1,1} 

intento

new int[]{1,1} 

o

new[]{1,1} 
+2

O simplemente 'nuevo [] {1,1}' si lo prefiere. – drch

+0

¡Gracias! ¡Ahora funciona! – Jodll

4
System.Collections.Generic.Dictionary<string,int[]> myDictionary; 
     myDictionary = new Dictionary<string, int[]> { { "length", new int[] { 1, 1 } }, { "width", new int[] { 1, 1 } } }; 
3

Tendrá que especificar que se trata de una matriz que se está insertando en su Diccionario:

System.Collections.Generic.Dictionary<string, int[]> myDictionary; 
myDictionary = new Dictionary<string, int[]> {{"length", new int[]{1,2}},{ "width",new int[]{3,4}}}; 
6

A continuación se presentan dos ejemplos que funcionan. El segundo ejemplo solo funciona dentro de un método. El primer ejemplo funcionará dentro de un método o fuera de un método en una clase.

Al código inicial le faltaba el() para la nueva instrucción Dictionary(), que es probablemente lo que dio el "{" error de símbolo no expresado. El "nuevo Int []" también se requiere

class SomeClass 
{ 
    Dictionary<string, int[]> myDictionary = new Dictionary<string, int[]>() 
    { 
     {"length", new int[] {1,1} }, 
     {"width", new int[] {1,1} }, 
    }; 

    public void SomeMethod() 
    { 
     Dictionary<string, int[]> myDictionary2; 
     myDictionary2 = new Dictionary<string, int[]>() 
     { 
      {"length", new int[] {1,1} }, 
      {"width", new int[] {1,1} }, 
     }; 

    } 
} 
1

Además de todas las buenas respuestas, también puede probar esto.

Dictionary<string, List<int>> dict = new Dictionary<string, List<int>>(); 

Si es posible prefieren Lista <> sobre matrices como el cambio de tamaño es difícil en matrices. No puede eliminar un elemento de una matriz. Pero un elemento se puede eliminar de la lista.

Cuestiones relacionadas