Partager via


Comment : exécuter plusieurs instructions pour chaque élément dans une collection ou un tableau (Visual Basic)

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

  1. 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.

  2. 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 itérer au sein d'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

  1. 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.

  2. 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 (Visual Basic)

Comment : exécuter plusieurs instructions à plusieurs reprises (Visual Basic)

Comment : améliorer les performances d'une boucle (Visual Basic)

Comment : passer à l'itération suivante d'une boucle (Visual Basic)

Référence

For...Next, instruction (Visual Basic)

Concepts

Structures de décision (Visual Basic)

Structures de boucle (Visual Basic)

Autres structures de contrôle (Visual Basic)

Structures de contrôle imbriquées (Visual Basic)

Autres ressources

Flux de contrôle en Visual Basic