-
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 ?
-
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];
-
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;
Réponses
Trop de publicités?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];
}
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).
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.