web-dev-qa-db-fra.com

Breaking / exit imbriqué dans vb.net

Comment puis-je sortir de nb ou imbriqué pour vb.net?

J'ai essayé d'utiliser exit pour mais il a sauté ou cassé un seul pour la boucle seulement.

Comment puis-je le faire pour les éléments suivants:

for each item in itemList
     for each item1 in itemList1
          if item1.text = "bla bla bla" then
                exit for
          end if
     end for
end for
116
KoolKabin

Malheureusement, il n'y a pas d'instruction exit two levels of for, mais il existe quelques solutions pour faire ce que vous voulez:

  • Aller à . En général, utiliser goto est considéré comme une mauvaise pratique (et à juste titre), mais utiliser goto uniquement pour un saut en avant dans des instructions de contrôle structurées est généralement considéré comme étant: OK, surtout si l’alternative est d’avoir un code plus compliqué.

    For Each item In itemList
        For Each item1 In itemList1
            If item1.Text = "bla bla bla" Then
                Goto end_of_for
            End If
        Next
    Next
    
    end_of_for:
    
  • Bloc externe factice

    Do
        For Each item In itemList
            For Each item1 In itemList1
                If item1.Text = "bla bla bla" Then
                    Exit Do
                End If
            Next
        Next
    Loop While False
    

    ou

    Try
        For Each item In itemlist
            For Each item1 In itemlist1
                If item1 = "bla bla bla" Then
                    Exit Try
                End If
            Next
        Next
    Finally
    End Try
    
  • Fonction séparée : place les boucles dans une fonction distincte que vous pouvez quitter avec return. Cela peut toutefois vous obliger à passer de nombreux paramètres, en fonction du nombre de variables locales que vous utilisez dans la boucle. Une alternative serait de placer le bloc dans un lambda multiligne, car cela créerait une fermeture sur les variables locales.

  • Variable booléenne : Cela pourrait rendre votre code un peu moins lisible, en fonction du nombre de couches de boucles imbriquées que vous avez:

    Dim done = False
    
    For Each item In itemList
        For Each item1 In itemList1
            If item1.Text = "bla bla bla" Then
                done = True
                Exit For
            End If
        Next
        If done Then Exit For
    Next
    
190
Heinzi

Mettez les boucles dans un sous-programme et appelez return

16

J'ai essayé plusieurs fois de saisir "exit for" et j'ai remarqué que cela fonctionnait et que VB ne m'avait pas hurlé dessus. Je suppose que c'est une option, mais que ça avait l'air mauvais.

Je pense que la meilleure option est similaire à celle partagée par Tobias. Il suffit de mettre votre code dans une fonction et de le faire revenir lorsque vous souhaitez sortir de vos boucles. A l'air plus propre aussi.

For Each item In itemlist
    For Each item1 In itemlist1
        If item1 = item Then
            Return item1
        End If
    Next
Next
3
Cesar
For i As Integer = 0 To 100
    bool = False
    For j As Integer = 0 To 100
        If check condition Then
            'if condition match
            bool = True
            Exit For 'Continue For
        End If
    Next
    If bool = True Then Continue For
Next
3
Hitesh Paliwal

Faites de la boucle externe une boucle while et "Exit While" dans l'instruction if.

3
Andrew Thomas

Si je veux sortir d'une boucle for-to, il suffit de définir l'index au-delà de la limite:

    For i = 1 To max
        some code
        if this(i) = 25 Then i = max + 1
        some more code...
    Next`

Poppa.

0
Poppa Mintin