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 ??

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top