Como faço para sair do aninhado ou loop no vb.net?
Eu tentei usar exit para, mas ele pulou ou violou apenas um loop apenas.
Como posso fazer o seguinte:
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
vb.net
for-loop
nested-loops
KoolKabin
fonte
fonte
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
.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 usargoto
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.Bloco externo fictício
ou
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:
fonte
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ã dagoto
opção.Coloque os loops em uma sub-rotina e chame
return
fonte
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.
fonte
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.
fonte
fonte
Se eu quiser sair de um loop for-to, basta definir o índice além do limite:
Poppa.
fonte