English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Manuale di base C#

Manuale avanzato C#

Orientamento ad oggetti (OOP) in C#

Array a spina di pesce in C#

Un array a spina di pesce è un array di array. Un array a spina di pesce memorizza array invece di valori letterali. Ad esempio, un array bidimensionale è un array unidimensionale di elementi identici, ma un array a spina di pesce, ogni array sottostante ha un numero diverso di elementi.

L'array a spina di pesce viene inizializzato con due parentesi quadre [ [] ]. La prima parentesi quadra specifica la dimensione dell'array, la seconda parentesi quadra specifica la dimensione dell'array che verrà memorizzato.

Esempio di dichiarazione di array a spina di pesce.

int[][] jArray1 = new int[2][]; // Può contenere due array unidimensionali 
int[][,] jArray2 = new int[3][,]; // Può contenere tre array bidimensionali

Nell'esempio sopra, jArray1 può contenere al massimo due array unidimensionali. jArray2 può contenere al massimo tre array bidimensionali, l'array [ , ] specifica l'array bidimensionale.

int[][] jArray = new int[2][]; 
jArray[0] = new int[3]{1, 2, 3};
jArray[1] = new int[4]{4, 5, 6, 7};

Puoi anche inizializzare un array a punteggio alla dichiarazione, come segue.

int[][] jArray = new int[2][]{
                new int[3]{1, 2, 3},
                new int[4]{4, 5, 6, 7}
            };
jArray[0][0]; // restituisce 1
jArray[0][1]; // restituisce 2
jArray[0][2]; // restituisce 3
jArray[1][0]; // restituisce 4
jArray[1][1]; // restituisce 5
jArray[1][2]; // restituisce 6
jArray[1][3]; // restituisce 7

Puoi accedere a un array a punteggio utilizzando due cicli for, come segue.

int[][] jArray = new int[2][]{
                new int[3]{1, 2, 3},
                new int[4]{4, 5, 6, 7}
            };
for(int i=0; i<jArray.Length; i++)
{
	for(int j=0; j < (jArray[i]).Length; j++)
		Console.WriteLine(jArray[i][j]);
}

Il seguente array a punteggio memorizza array bidimensionali, dove il secondo parentesi [ ] rappresenta un array bidimensionale.

int[][,] jArray = new int[2[,];
jArray[0] = new int[3, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 } };
jArray[1] = new int[2, 2] { { 7, 8 }, { 9, 10 } }; 
jArray[0][1, 1]; // restituisce 4
                                             
jArray[1][1, 0]; // restituisce 9
                                             
jArray[1][1, 1]; // restituisce 10

Se aggiungi un altro parentesi, allora è un array di array.

int[][][] intJaggedArray = new int[2][][] 
                            {
                                new int[2][]  
                                { 
                                    new int[3] { 1, 2, 3},
                                    new int[2] { 4, 5} 
                                },
                                new int[1][]
                                { 
                                    new int[3] { 7, 8, 9}
                                }
                            };
Console.WriteLine(intJaggedArray[0][0][0]); // 1
Console.WriteLine(intJaggedArray[0][1][1]); // 5
    
Console.WriteLine(intJaggedArray[1][0][2]); // 9

Negli esempi di array intercalati sopra, tre parentesi quadre[][][] rappresentano l'array dell'array dell'array. Pertanto, intJaggedArray conterrà due elementi, il che significa due array. Ogni array contiene ancora un array (uno uno). intJaggedArray[0][0][0] punta al primo elemento dell'array interno. intJaggedArray[1][0][2] punta al terzo elemento dell'array interno. La seguente figura illustra questo.

Array a spina di pesce