Come lavorare con array frastagliati in C #

Un array può essere definito come una raccolta sequenziale di elementi dello stesso tipo di dati. Gli elementi di una matrice vengono archiviati in posizioni di memoria contigue. Gli array possono essere singoli o multidimensionali. Un array frastagliato è un tipo speciale di array multidimensionale in cui ciascuno degli array (un array frastagliato è in realtà un array di array) può essere di dimensioni variabili.

È possibile avere array frastagliati in qualsiasi linguaggio del computer che fornisce supporto per gli array. Un array frastagliato (noto anche come array irregolare) è un array di array in cui gli array dei membri a loro volta possono avere dimensioni e dimensioni diverse. È possibile implementare array multidimensionali come array frastagliati per migliorare le prestazioni.

Iniziare con gli array frastagliati in C #

In questa sezione esploreremo come dichiarare, inizializzare e accedere agli array irregolari. Come sappiamo, un array frastagliato comprende un array di array di dimensioni simili o diverse. In altre parole, in una matrice frastagliata, il numero di righe è fisso, ma il numero di colonne può variare. Quando si dichiara un array frastagliato, è possibile dichiarare semplicemente il numero di righe dell'array e preferire specificare il numero di colonne in fase di esecuzione.

Facci sapere di capire tutto ciò che abbiamo imparato finora sugli array frastagliati con alcuni esempi di codice. Considera il seguente array.

string[][] str = new string[5][];

Hai dichiarato le righe dell'array. Ci sono 5 righe in questo array che a loro volta possono contenere 5 array di stringhe di diverse lunghezze. Vediamo ora come possiamo dichiarare 5 array nell'array denominato str, ciascuno di lunghezza diversa. Il frammento di codice seguente illustra come ottenere questo risultato.

str[0] = new string[5];

str[1] = new string[10];

str[2] = new string[20];

str[3] = new string[50];

str[4] = new string[10];

È ora possibile memorizzare stringhe di lunghezze diverse nella matrice frastagliata come mostrato nello snippet di codice di seguito.

str[0][0] = "Pune";

str[1][0] = "Kolkata";

str[2][0] = "Bangalore";

str[3][0] = "The pink city named Jaipur";

str[4][0] = "Hyderabad";

Di seguito è riportato l'elenco completo del codice che illustra come è possibile dichiarare un array frastagliato, archiviare dati e quindi recuperarlo e visualizzarlo nella console.

public static void Main(string[] args)

       {

         //First declare the jagged array

           string[][] str = new string[5][];

           str[0] = new string[5];

           str[1] = new string[10];

           str[2] = new string[20];

           str[3] = new string[50];

           str[4] = new string[10];

           //Now store data in the jagged array

           str[0][0] = "Pune";

           str[1][0] = "Kolkata";

           str[2][0] = "Bangalore";

           str[3][0] = "The pink city named Jaipur";

           str[4][0] = "Hyderabad";

            //Lastly, display the content of each of the string arrays inside the jagged array

           for (int i = 0; i < 5; i++)

               Console.WriteLine(str[i][0]);

           Console.Read();

       }

Come puoi vedere nel programma sopra, il numero di righe della matrice frastagliata è fisso ma il numero di colonne varia. Questo esempio rappresenta una matrice frastagliata bidimensionale. Se dovessi usare un normale array bidimensionale, dovresti consumare 5 x 50, cioè 250 byte. Il motivo è che dovresti avere uno spazio di 50 byte in ciascuno degli array nell'array frastagliato per contenere la stringa più grande. In questo esempio, la stringa più grande è di dimensione 50. Al contrario, utilizzando un array frastagliato, si finisce per consumare solo 95 byte! Interessante no?

Quando si esegue il programma precedente, le stringhe memorizzate nell'array frastagliato vengono visualizzate nella finestra della console.

Un altro esempio: un array frastagliato di numeri interi

Simile a come abbiamo creato un array frastagliato di stringhe, puoi anche creare un array frastagliato di numeri interi. In effetti, puoi avere un array frastagliato di qualsiasi tipo di dati. Ecco come puoi dichiarare un array frastagliato in C #.

int [][] numbersArray;

Il frammento di codice seguente illustra come dichiarare un array frastagliato di interi, cioè un array frastagliato che può a sua volta memorizzare array di interi di elementi variabili.

int[][] numbersArray = new int[5][];

for (int i = 0; i < numbersArray.Length; i++)

   {

         numbersArray[i] = new int[10 * (i + 1)];

   }

Lo snippet di codice precedente crea un array frastagliato intero denominato numbersArray che a sua volta contiene array interi di dimensioni variabili.