Respostas:
Infelizmente, não há nenhuma exit two levels of for
declaração, mas existem algumas soluções alternativas para fazer o que você deseja:
Goto . Em geral, usar goto
é considerado uma má prática (e com razão), mas usar goto
somente para um salto para frente de instruções de controle estruturadas é geralmente considerado bom, especialmente se a alternativa for ter um código mais complicado.
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:
Bloco externo fictício
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
Função separada : Coloque os loops dentro de uma função separada, com a qual você pode sair return
. No entanto, isso pode exigir que você passe muitos parâmetros, dependendo de quantas variáveis locais você usa dentro do loop. Uma alternativa seria colocar o bloco em um lambda de várias linhas, pois isso criará um fechamento sobre as variáveis locais.
Variável booleana : isso pode tornar seu código um pouco menos legível, dependendo de quantas camadas de loops aninhados você possui:
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
goto
outro que a função se realmente fizer sentido.
goto
em um grande projeto apenas para lembrar meus dias de programação em qbasic, ah em tempos tão inocentes. caso contrário, eu iria fazer um manequim.
Try
/ Exit Try
, mas não sou fã da goto
opção.
Coloque os loops em uma sub-rotina e chame return
goto
solução mais simples . Obviamente, se o código for reutilizável, ele já deve estar em uma função.
Faça o loop externo um loop while e "Exit While" na instrução if.
goto
com mais instruções, mais verbosidade e mais indentação. Qual é o objetivo?
Eu experimentei digitar "exit for" algumas vezes e notei que funcionava e o VB não gritava comigo. Acho que é uma opção, mas parecia ruim.
Eu acho que a melhor opção é semelhante à compartilhada por Tobias. Basta colocar seu código em uma função e fazer com que ele retorne quando você desejar interromper seus loops. Parece mais limpo também.
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
Se eu quiser sair de um loop for-to, basta definir o índice além do limite:
For i = 1 To max
some code
if this(i) = 25 Then i = max + 1
some more code...
Next`
Poppa.
Exit For item
variante da declaração, semelhante aNext item
. Nos "bons velhos tempos", você poderia explicitamenteNext
o loop externo. Hoje, o VB dá um erro. Claro, é mais "construtivo"Exit For
.