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
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
Mettez les boucles dans un sous-programme et appelez return
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
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
Faites de la boucle externe une boucle while et "Exit While" dans l'instruction if.
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.