2013-02-26 13 views
9

Sto tentando di inizializzare un array bidimensionale di valori interi con -1. Quando creo un nuovo array, viene automaticamente riempito con 0. So che posso farlo con 2 per cicli, ma immagino ci dovrebbe essere un modo per farlo mentre l'array è in costruzione (quindi non ho per attraversarlo due volte), in modo che invece di 0, il valore fornito venga inserito. È possibile? Se non durante la creazione iniziale dell'array, c'è qualche altro modo per risparmiare tempo o codice, o sono bloccato con 2 per cicli?Come inizializzare array multidimensionale con diverso valore predefinito

+3

Quanto sono grandi questi array? –

+0

La dimensione dell'array si basa sull'input della funzione che lo crea, ho dimenticato di dirlo. L'inizializzazione diretta è fuori questione. – kovike

risposta

11

Con una matrice multidimensionale, i loop sono molto probabilmente l'approccio migliore, a meno che l'array non sia abbastanza piccolo da inizializzarsi direttamente nel codice.

Se si utilizza uno jagged array, è possibile inizializzare il primo sub-array, quindi utilizzare Array.Copy per copiare questi valori in ogni altro sub-array. Ciò richiederà ancora una iterazione attraverso il primo sub array e un loop attraverso gli array esterni N-1, ma l'operazione di copia sarà più veloce dei loop.

+0

Sto davvero usando un array multidimensionale. Bene, immagino che dovrò andare al "vecchio stile" allora. – kovike

15

provare qualcosa di simile: int[,] array2D = new int[,] { { -1 }, { -1 }, { -1 }, { -1} };

o con la dimensione int[,] array2D = new int[4,2] { { -1,-1 }, { -1,-1 }, { -1,-1 }, {-1,-1} };

+4

Non so perché il -1 - Questo è perfettamente valido per piccoli array 2D, e l'opzione migliore in tal caso. +1 da me ... (Questo smette di essere mantenibile abbastanza velocemente se gli array sono grandi, però) –

+0

Lo stesso da me, ho dimenticato la menzione del dettaglio importante nella domanda originale. – kovike

+0

Va bene, @ReedCopsey ha risposto bene alla tua domanda, immagino – TravellingGeek

Problemi correlati