2009-07-09 5 views
4

Comment déclarer un tableau "profond" en C#?C# - Tableaux int multidimensionnels

je voudrais avoir un tableau int comme: [ 1, 4, 5, 6, [3, 5, 6, 7, 9], 1, 4, 234, 2, 1, 2,4,6,67, [1,2,4,44,56,7] ]

Je l'ai déjà fait, mais je ne me souviens pas de la bonne syntaxe. Mais c'était quelque chose comme ce qui est écrit ci-dessous: Int32 [] MyDeepArray = new Int32 [] = {3, 2, 1, 5, {1, 3, 4, 5}, 1, 4, 5};

Et comment l'analyser correctement .. Comment vérifier qu'un tableau est un tableau?

Merci!

Répondre

7

Je crois que le terme que vous cherchez est jagged array.

Il peut être fait comme ceci:

int[][] jaggedArray2 = new int[][] 
{ 
    new int[] {1,3,5,7,9}, 
    new int[] {0,2,4,6}, 
    new int[] {11,22} 
}; 

Et vous pouvez itérer à travers eux comme ceci:

for(int i = 0; i < jaggedArray2.Length; i++) 
    for(int j = 0; j < jaggedArray2[i].Length; j++) 
    { 
     //do something here. 
    } 
+1

Ou juste faire un foreach imbriqué. –

+1

@Steven Ouais, j'utilisais le traditionnel pour mieux comprendre la nature déchiquetée des tableaux. – Joseph

1

Int32 [] [] vous permettra de déclarer un tableau à 2 dimensions où les dimensions ne doivent pas toutes être identiques. Ainsi, par exemple, vous pouvez avoir les éléments suivants:

[ 
[2,3,4,5] 
[5] 
[1,2,3,4,5,6,7,8] 
[3,5] 
[4] 
] 

L'alternative est Int32 [,] où les dimensions doivent toujours être les mêmes.

Je ne suis pas sûr de ce que vous entendez par «comment vérifier qu'un tableau est un tableau».

0

En ce qui concerne « comment puis-je vérifier qu'un tableau est un tableau »: C# est fortement typée. tout ce qui est déclaré en tant que tableau doit être un tableau. ce que vous cherchez est un tableau, non d'entiers, mais de tableaux d'entiers. par conséquent, chaque élément de votre tableau externe est un tableau d'entiers fortement typé. ce ne sont pas des entiers et des tableaux d'entiers mélangés. la chose la plus proche que vous obtiendrez est int-arrays et int-arrays-contenant-only-one-int tous mélangés. étant donné que, vous pouvez toujours les parcourir, peu importe, car ce sont tous des tableaux, vous pouvez les traiter tous comme des tableaux, et ceux qui ne contiennent qu'un seul élément ne feront qu'intervenir une fois dans l'itération.

Si vous souhaitez vérifier explicitement, car vous traitez différemment les int-arrays-with-only-int, vous pouvez vérifier leur valeur .Length.