J'écris une boucle pour traverser la première gamme d'une boucle 2D, et je l'ai actuellement comme ça:
For Each Dir_path In MasterIndex(, 0) 'do some stuff here Next
3 Réponses :
Vous ne pouvez tout simplement pas. Les tableaux multidimensionnels ne sont pas vraiment pris en charge dans l'infrastructure-cadre .NET. Ils semblent être étiquetés comme une réflexion après coup. La meilleure solution est souvent de ne pas les utiliser et d'utiliser des matrices déchiquetées (réseaux de tableaux - entier () () code> au lieu de
entier (,) code>). p>
Donc, je l'ai changé en MasterIndex () () code> mais quand je remplace
pour chaque dir_path en MasterIndex (, 0) code> avec
pour chaque dir_path in masterindex () (0) code> i get
Nombre d'indices est inférieur au nombre de dimensions de la matrice indexée code>?
@Tim que la syntaxe est simplement invalide. Utilisez pour chaque x dans MasterIndex ... Dirpath = x (0) code> et travaille de là ...
Vous pouvez y accomplir avec des boucles imbriquées pour des boucles
Remarque: lorsque vous utilisez un pour chaque boucle pour itérer sur des éléments sur un tableau, l'espace réservé généré sur chaque itération est une copie de la valeur dans le tableau. Les modifications apportées à cette valeur ne seront pas reflétées dans la matrice d'origine. Si vous souhaitez faire autre chose que de lire les informations, vous devez utiliser une boucle pour adresser directement les éléments de matrice directement. P>
supposant une matrice de deux dimensions L'exemple de code suivant affectera une valeur à chaque élément de chaque dimension. p> Vous pouvez éventuellement utiliser la propriété si vous voulez Boucle sur un tableau déchiqueté comme Konrad Rudolph suggérait (cela correspond fonctionnellement plus étroitement des mises en œuvre dans d'autres langages dactylographiés plus vaguement tels que PHP), vous pouvez y parvenir comme: p> .Rank code> pour itérer dynamiquement chaque dimension p>
'This is a jagged array (array of arrays) populated with three arrays each with three elements
Dim JaggedIndex()() As String = {
New String() {"1", "2", "3"},
New String() {"1", "2", "3"},
New String() {"1", "2", "3"}
}
For Each aOuter As String() In JaggedIndex
'If you are only interested in the first element you don't need the inner for each loop
Dim sDesiredValue As String = aOuter(0) 'This is the first element in the inner array (second dimension)
For Each sElement As String In aOuter
Dim sCatch As String = sElement 'Assign the value of each element in the inner array to sCatch
sElement = "This Won't Stick" 'This will only hold value within the context of this loop iteration
Next 'sElement
Next 'aOuter
'JaggedIndex is still the same as when it was declared
Vous pouvez utiliser Énumérable.Range récursivement pour itérer les dimensions d'un tableau.
permet de dire que nous avons une grille de deux dimensions (rangées et colonnes) de Int. p>
Nous pouvons l'iter comme suit: p> La logique peut être appliquée à n'importe quel nombre de dimensions. p> p>
J'ai mis à jour les deux exemples pour tenir compte de votre demande plus détaillée