Comment : exécuter plusieurs instructions pour chaque élément dans une collection ou un tableau
Mise à jour : novembre 2007
La construction d'instruction For Each est semblable à la boucle For...Next, mais elle exécute le bloc d'instructions de chaque élément d'une collection, et non un nombre spécifié de fois. Une boucle For Each...Next utilise une variable d'élément qui représente un élément différent de la collection durant chaque répétition de la boucle.
Répétition d'un bloc d'instructions pour une collection
Pour exécuter un groupe d'instructions pour chaque élément d'une collection
Identifiez la collection sur laquelle exécuter le bloc d'instructions et utilisez l'For Each...Next, instruction (Visual Basic) pour spécifier à la fois la variable d'élément et la collection.
For Each thisControl As System.Windows.Forms.Control In thisForm.Controls
Si la variable d'élément n'est pas déclarée hors de la boucle, vous pouvez utiliser la clause As pour la déclarer dans le cadre de l'instruction For Each.
Visual Basic substitue automatiquement un élément différent de la collection à chaque itération.
Complétez la construction For Each...Next avec une instruction Next après la dernière instruction à répéter. Vous pouvez spécifier la variable d'élément dans l'instruction Next.
Sub lightBlueBackground(ByVal thisForm As System.Windows.Forms.Form) For Each thisControl As System.Windows.Forms.Control In thisForm.Controls thisControl.BackColor = System.Drawing.Color.LightBlue Next thisControl End Sub
Vous pouvez lire les éléments de la collection, mais vous ne pouvez pas apporter de modifications à la collection elle-même, telle qu'ajouter, supprimer ou remplacer un élément. Toutefois, si un élément est un type référence, vous pouvez accéder et définir ses membres. Chaque élément Control étant un type référence, le code de l'exemple précédent peut modifier sa propriété BackColor.
Répétition d'un bloc d'instructions pour un tableau
Vous pouvez également parcourir un tableau avec une boucle For Each...Next. Toutefois, comme avec les collections, vous pouvez uniquement lire les éléments du tableau, et non les modifier.
Pour exécuter un groupe d'instructions pour chaque élément d'un tableau
Utilisez l'instruction For Each pour spécifier à la fois la variable d'élément et le tableau. Ne faites pas suivre le nom du tableau de parenthèses.
Visual Basic traite le tableau de la même manière qu'une collection.
Faites suivre le bloc d'instructions d'une instruction Next. Vous pouvez spécifier la variable d'élément dans l'instruction Next.
La procédure ci-après a pour but de trouver la somme des éléments d'un tableau et de réinitialiser chaque élément à zéro.
Function sumAndReset(ByRef numbers() As Integer) As Integer Dim sum As Integer = 0 For Each elt As Integer In numbers sum += elt ' The following statement works only on the local copy ' of the array, not on the original array. elt = 0 Next elt Return sum End Function
Le calcul de la somme fonctionne comme prévu, car il ne repose que sur la lecture des éléments. En revanche, la réinitialisation à zéro ne fonctionne pas comme prévu, car seule la copie locale de chaque élément est réinitialisée à zéro, tandis que l'élément d'origine reste inchangé dans le tableau d'origine.
Voir aussi
Tâches
Comment : transférer un contrôle hors d'une structure de contrôle
Comment : exécuter plusieurs instructions à plusieurs reprises
Comment : améliorer les performances d'une boucle
Comment : passer à l'itération suivante d'une boucle
Concepts
Structures de contrôle imbriquées
Référence
For...Next, instruction (Visual Basic)