126 votes

Pourquoi avons-nous à la fois des tableaux en dents de scie et des tableaux multidimensionnels ?

  1. Quelle est la différence entre un tableau en dents de scie et un tableau multidimensionnel ? Y a-t-il un avantage de l'un par rapport à l'autre ?

  2. Et pourquoi Visual Studio ne me permet-il pas de faire un

    MyClass[][] abc = new MyClass[10][20];

    (Nous avions l'habitude de faire cela en C++, mais en C#, il souligne [20] d'une ligne rouge ondulée. Dit que le spécificateur de rang n'est pas valide)

    mais se contente de

    MyClass[,] abc = new MyClass[10,20];
  3. Enfin, comment puis-je initialiser ceci en une seule ligne (comme nous le faisons dans un simple tableau avec {new xxx...}{new xxx....} )

    MyClass[][,][,] itemscollection;

1voto

Joshua Rodgers Points 2932

Si vous recherchez un tableau multidimensionnel dont les limites sont définies, utilisez toujours la fonction [,] syntaxe du style. Cela permet de s'assurer que chaque portion est de taille égale.

Lorsque vous utilisez [][] En réalité, vous créez un tableau de tableaux. Cela signifie que chaque tableau peut être dimensionné différemment. Par exemple :

int[][] jaggedArray = new int[5][]
for(int index = 0; index < jaggedArray.Length ; ++index)
{
    jaggedArray[index] = new int[index + 1];
}

1voto

Josiah Ruddell Points 14171

La déclaration en ligne ressemblerait à quelque chose comme ceci :

int[,] numbers = { {1, 2}, {3, 4}, {5, 6} };

1voto

rownage Points 1610

Pour le numéro 1, voir cette question de l'OS

Pour les tableaux en ligne déchiquetés ou multidimensionnels, voir ce qui suit guide de programmation :

// Three-dimensional array.
int[, ,] array3D = new int[,,] { { { 1, 2, 3 }, { 4, 5, 6 } },
{ { 7, 8, 9 }, { 10, 11, 12 } } };

// Same array with dimensions specified at declaration.
int[, ,] array3Da = new int[2, 2, 3] { { { 1, 2, 3 }, { 4, 5, 6 } },
{ { 7, 8, 9 }, { 10, 11, 12 } } };

Il n'est pas nécessaire de spécifier les dimensions (array3D), mais si vous savez qu'elles ne changeront jamais, il est utile de savoir quelles dimensions vous utilisez (array3Da).

1voto

Roblem Points 21

Pour un tableau multidimensionnel, pensez à une boîte ou à un rectangle. Chaque ligne a la même longueur et chaque colonne a la même longueur.

Dans un tableau irrégulier, les lignes et les colonnes peuvent ne pas avoir la même taille. Par exemple, les colonnes ou les lignes peuvent être de tailles différentes. Cela conduit à une forme qui n'est pas une ligne droite sur les côtés, comme un rectangle. Au lieu de cela, les côtés peuvent être irrégulier .

J'ai utilisé des tableaux à 2 dimensions/2 pour cet exemple, mais cela s'applique à d'autres.

0voto

chuck norris Points 1

Vous devez comprendre le fonctionnement interne du tableau le tableau multidimensionnel se comporte comme un tableau à dimension unique, à l'exception de l'indexation double qui est convertie en index unique.

Votre Jagged array en c# est un tableau d'objets qui sont à leur tour des tableaux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X