10

Ho una matrice di array 2D. Per esempio, è come:Come inizializzare un array di array 2D?

{{{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}}} 

Ma Se scrivo

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}}}; 

il compilatore si lamenta "previsto".

Se scrivo

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}}}; 

il compilatore si lamenterà

"Un inizializzatore array nidificato è previsto".

Quindi perché questo accade e qual è il modo corretto di inizializzazione?

risposta

20

Stai cercando di creare matrice irregolare. Il tuo array ha n righe così il tuo primo quadrato dovrebbe essere [] non [,]. L'elemento in ogni riga (indice di n) è array 2D, quindi è necessario utilizzare [,]. Infine, è possibile risolvere il problema cambiando 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}} 
}; 
+0

Aggiungo 'new int [,] []' all'inizio, ma l'errore è ancora lì. – ziyuang

+0

Ah, vedo il tuo problema, ho aggiunto il codice di correzione dal tuo esempio. – Ekk

+0

Funziona ~ Ho pensato che 'int [,]' è un tipo quindi la matrice di questo tipo sarebbe 'int [,] []'. Perché è così? – ziyuang

2

un array di array 2D è una matrice 3d:

int[, ,] array3D = new int[,,] { { { 1, 2, 3 } }, { { 4, 5, 6 } } }; 

vedere anche più a MSDN http://msdn.microsoft.com/en-us/library/2yd9wwz4(v=VS.90).aspx

+1

ma che rende indice esterno fisso, che risulta dalla sua domanda non vuole fissare – Dani

+0

Matrice 3d richiede anche che tutti i 3 indici essere forniti, con conseguente un numero intero, mentre la richiedente intende indicizzare e tornare un array 2d. – dapi