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

Tableau en dents de scie C#

Les tableaux en dents de scie sont des tableaux de tableaux. Les tableaux en dents de scie stockent des tableaux plutôt que des valeurs littérales. Par exemple, un tableau bidimensionnel est un tableau unidimensionnel composé de plusieurs éléments identiques, mais un tableau en dents de scie, chaque tableau suivant a un nombre différent d'éléments.

Les tableaux en dents de scie sont initialisés avec deux crochets [ et ]. Le premier crochet spécifie la taille de l'array, et le deuxième crochet spécifie la taille des tableaux à stocker.

Les exemples suivants déclarent des tableaux en dents de scie.

int[][] jArray1 = new int[2]; // peut contenir jusqu'à deux tableaux unidimensionnels 
int[][,] jArray2 = new int[3][,]; // peut contenir jusqu'à trois tableaux bidimensionnels

Dans l'exemple ci-dessus, jArray1Il peut stocker jusqu'à deux tableaux unidimensionnels. jArray2Il peut stocker jusqu'à trois tableaux bidimensionnels, où les crochets [ et ] spécifient le tableau bidimensionnel.

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

Vous pouvez également initialiser un tableau en dents de scie lors de la déclaration, comme suit.

int[][] jArray = new int[2]{
                new int[3]{1, 2, 3},
                new int[4]{4, 5, 6, 7}
            };
jArray[0][0]; //Retour1
jArray[0][1]; //Retour2
jArray[0][2]; //Retour3
jArray[1][0]; //Retour4
jArray[1][1]; //Retour5
jArray[1][2]; //Retour6
jArray[1][3]; //Retour7

Vous pouvez itérer sur un tableau en dents de scie à l'aide de deux boucles for, comme suit.

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]);
}

Le tableau en dents de scie suivant stocke des tableaux bidimensionnels, où le deuxième crochet [ et ] représente un tableau bidimensionnel.

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]; //Retour4
                                             
jArray[1][1, 0]; //Retour9
                                             
jArray[1][1, 1]; //Retour10

Si vous ajoutez un autre crochet, alors c'est un tableau de tableaux.

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

Dans l'exemple de tableau imbriqué ci-dessus, les trois crochets[][][] représentent des tableaux de tableaux. Par conséquent, intJaggedArray contiendra deux éléments, ce qui signifie deux tableaux. Chaque tableau contient également un tableau (unidimensionnel). intJaggedArray[0][0][0] pointe au premier élément de la première array interne. intJaggedArray[1][0][2]] Pointe le troisième élément de la deuxième array interne. La figure suivante explique cela.

Tableau en dents de scie