Domanda
Sto usando gli array frastagliati e hanno un po 'un problema (o almeno penso di sì). La dimensione di queste matrici è determinato dal numero di righe vengono restituiti in un database, quindi è molto variabile. L'unica soluzione che ho è quello di impostare le dimensioni della matrice di essere molto grande, ma questo sembra ... non solo il modo migliore per fare le cose.
int[][] hulkSmash = new int[10][];
hulkSmash[0] = new int[2] {1,2};
Come posso lavorare con gli array frastagliati senza impostare le dimensioni, o è solo un dato di fatto con C # di programmazione ??
Soluzione
List<List<int>> hulkSmash = new List<List<int>>();
hulkSmash.Add(new List<int>() { 1, 2 });
o
List<int[]> hulkSmash = new List<int[]>();
hulkSmash.Add(new int[] { 1, 2 });
Altri suggerimenti
Hai avuto 2 scelte:
- È in grado di leggere il formato delle informazioni restituite dal database, e allocare il vostro spazio serie in quel momento, una volta che sai quello che stai ricevendo.
- In caso contrario, quello che stai cercando è una struttura dati che ha dimensioni variabili. Date un'occhiata a Lista per esempio: MSDN: List
Gli altri esempi che utilizzano List<T>
e le collezioni sono il modo migliore di procedere. A volte trovo la
List<List<int>> hulkSmash = new List<List<int>>();
sintassi un po 'ingombrante. Per fortuna, ci sono alcune opzioni per gestire questo.
La prima opzione che a volte l'uso è quello di creare un alias:
using List<List<int>> = HulkSmashCollection;
Questo impedisce di avere a che fare <<<Types>>>
nidificato per tutto il tempo. Ovunque devi digitare List<List<int>>
si può invece digitare HulkSmashCollection
(o qualcosa di più breve ancora) al posto.
La seconda opzione è quella di avvolgere l'elenco delle liste all'interno di una classe chiamata, per esempio, MyHulkSmashes. Qui, è necessario fornire solo le funzioni / proprietà è necessario, come Count
o Find()
ecc
Entrambi questi concetti sono usati per ridurre la quantità di codice sullo schermo, e ridurre la complessità percepita.
Una raccolta di interi (come List) vi darà la flessibilità che si desidera e non sprecare spazio come sarebbe assegnare un array che è molto più grande di quello che sarà mai bisogno.