visual - Romper/salir anidados en vb.net
for visual basic 6 (6)
¿Cómo salgo de anidado para o bucle en vb.net?
Intenté usar exit for, pero saltó o rompió solo un for for loop.
¿Cómo puedo hacerlo para lo siguiente?
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
Coloque los bucles en una subrutina y llame a return
Haga que el bucle externo sea un bucle while y "Exit While" en la instrucción if.
He experimentado con tipear "exit for" varias veces y noté que funcionó y VB no me gritó. Es una opción, supongo, pero se veía mal.
Creo que la mejor opción es similar a la que comparte Tobias. Simplemente ponga su código en una función y haga que vuelva cuando quiera salir de sus bucles. Se ve más limpio también.
For Each item In itemlist
For Each item1 In itemlist1
If item1 = item Then
Return item1
End If
Next
Next
Intenta usar ''Salir para''.
Es trabajo para mi
;-)
Lamentablemente, no hay exit two levels of for
declaración, pero hay algunas soluciones para hacer lo que desee:
Goto . En general, el uso de
goto
se considera una mala práctica (y con razón), pero el uso degoto
únicamente para un salto hacia adelante de las instrucciones de control estructurado generalmente se considera correcto, especialmente si la alternativa es tener un código más 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:
Bloque exterior ficticio
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
o
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
Función separada : Coloque los bucles dentro de una función separada, que puede salir con
return
. Sin embargo, esto podría requerir que pase muchos parámetros, dependiendo de cuántas variables locales use dentro del ciclo. Una alternativa sería poner el bloque en una lambda de múltiples líneas, ya que esto creará un cierre sobre las variables locales.Variable booleana : Esto podría hacer que tu código sea menos legible, dependiendo de la cantidad de capas de bucles anidados que tengas:
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
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