C# Language Tableaux dentelés


Exemple

Les tableaux dentelés sont des tableaux qui, à la place des types primitifs, contiennent des tableaux (ou d'autres collections). C'est comme un tableau de tableaux - chaque élément du tableau contient un autre tableau.

Ils sont similaires aux tableaux multidimensionnels, mais ont une légère différence: comme les tableaux multidimensionnels sont limités à un nombre fixe de lignes et de colonnes, avec des tableaux irréguliers, chaque ligne peut avoir un nombre de colonnes différent.

Déclarer un tableau irrégulier

Par exemple, en déclarant un tableau irrégulier avec 8 colonnes:

int[][] a = new int[8][];

Le second [] est initialisé sans numéro. Pour initialiser les sous-tableaux, vous devez le faire séparément:

for (int i = 0; i < a.length; i++) 
{
    a[i] = new int[10];
}

Obtenir / définir des valeurs

Maintenant, obtenir l'une des sous-réseaux est facile. Imprimons tous les numéros de la 3ème colonne d' a :

for (int i = 0; i < a[2].length; i++)
{
    Console.WriteLine(a[2][i]);
}

Obtenir une valeur spécifique:

a[<row_number>][<column_number>]

Définir une valeur spécifique:

a[<row_number>][<column_number>] = <value>

N'oubliez pas : il est toujours recommandé d'utiliser des tableaux irréguliers (tableaux de tableaux) plutôt que des tableaux multidimensionnels (matrices). C'est plus rapide et plus sûr à utiliser.


Note sur l'ordre des crochets

Considérons un tableau tridimensionnel de tableaux à cinq dimensions de tableaux à une dimension de int . Ceci est écrit en C # comme:

int[,,][,,,,][] arr = new int[8, 10, 12][,,,,][];

Dans le système de type CLR, la convention pour l'ordre des parenthèses est inversée, donc avec l' arr ci-dessus, nous avons:

    arr.GetType().ToString() == "System.Int32[][,,,,][,,]"

et également:

    typeof(int[,,][,,,,][]).ToString() == "System.Int32[][,,,,][,,]"