web-dev-qa-db-fra.com

VB.NET - Comment passer à l'élément suivant a For Each Loop?

Y a-t-il une déclaration comme Exit For, sauf qu'au lieu de sortir de la boucle, il passe simplement à l'élément suivant.

Par exemple:

For Each I As Item In Items

    If I = x Then 
        ' Move to next item
    End If

    ' Do something

Next

Je sais que je pourrais simplement ajouter un Else à l'instruction If pour qu'il se lise comme suit:

For Each I As Item In Items

    If I = x Then 
        ' Move to next item
    Else
        ' Do something
    End If

Next

Je me demandais simplement s'il y avait un moyen de passer à l'élément suivant de la liste Items. Je suis sûr que la plupart des gens demanderont à juste titre pourquoi ne pas utiliser simplement l'instruction Else, mais pour moi, encapsuler le code "Do Something" semble moins lisible. Surtout quand il y a beaucoup plus de code.

86
Sean Taylor
For Each I As Item In Items
    If I = x Then Continue For

    ' Do something
Next
168
Adam Robinson

J'utiliserais plutôt l'instruction Continue:

For Each I As Item In Items

    If I = x Then
        Continue For
    End If

    ' Do something

Next

Notez que ceci diffère légèrement du déplacement de l'itérateur lui-même - tout ce qui précède le If sera exécuté à nouveau. Habituellement c'est ce que vous voulez, mais sinon, vous devrez utiliser GetEnumerator() puis MoveNext()/Current explicitement plutôt que d'utiliser un For Each boucle.

46
Jon Skeet

Qu'en est-il de:

If Not I = x Then

  ' Do something '

End If

' Move to next item '
3
timo2oo8

Je veux préciser que le code suivant n'est pas une bonne pratique. Vous pouvez utiliser GOTO Label:

For Each I As Item In Items

    If I = x Then
       'Move to next item
        GOTO Label1
    End If

    ' Do something
    Label1:
Next
2
Syed Tayyab Ali

Quand j'ai essayé Continue For ça a échoué, j'ai eu une erreur de compilation. Ce faisant, j'ai découvert 'Resume':

For Each I As Item In Items

    If I = x Then
       'Move to next item
       Resume Next
    End If

    'Do something

Next

Note: J'utilise VBA ici.

0
Karmendra