recorrer - multidimensional array c# examples
¿Cómo inicializar una matriz de matrices 2D? (2)
Tengo una matriz de matrices 2D. Por ejemplo, es como:
{{{0, 0, 1}, {1, 0, 0}}
{{0, 0, 3}, {2, 1, 2}, {2, 2, 1}, {3, 0, 0}}
{{0, 0, 7}, {3, 2, 6}, {6, 2, 3}, {6, 3, 2}, {7, 0, 0}}}
Pero si escribo
int [,][] arrays={{{0, 0, 1}, {1, 0, 0}}
{{0, 0, 3}, {2, 1, 2}, {2, 2, 1}, {3, 0, 0}}
{{0, 0, 7}, {3, 2, 6}, {6, 2, 3}, {6, 3, 2}, {7, 0, 0}}};
el compilador se quejará "; expected".
Si escribo
int [,][] arrays={new int[,] {{0, 0, 1}, {1, 0, 0}}
new int[,] {{0, 0, 3}, {2, 1, 2}, {2, 2, 1}, {3, 0, 0}}
new int[,] {{0, 0, 7}, {3, 2, 6}, {6, 2, 3}, {6, 3, 2}, {7, 0, 0}}};
el compilador se quejará
"Se espera un inicializador de matriz anidada".
Entonces, ¿por qué sucede esto y cuál es la forma correcta de inicialización?
Una matriz de arrays 2d es una matriz 3d:
int[, ,] array3D = new int[,,] { { { 1, 2, 3 } }, { { 4, 5, 6 } } };
También vea más en MSDN http://msdn.microsoft.com/en-us/library/2yd9wwz4(v=VS.90).aspx
Estás tratando de crear una matriz dentada. Su matriz tiene n
filas por lo que su primer cuadrado debe ser [] no [,]. El elemento en cada fila (índice de n
) es una matriz 2D, por lo que debe usar [,]
. Finalmente, puede solucionar su problema modificando int [,][]
a int[][,]
.
int[][,] arrays = {
new int[,] {{0, 0, 1}, {1, 0, 0}},
new int[,] {{0, 0, 3}, {2, 1, 2}, {2, 2, 1}, {3, 0, 0}},
new int[,] {{0, 0, 7}, {3, 2, 6}, {6, 2, 3}, {6, 3, 2}, {7, 0, 0}}
};