Respuestas:
Desafortunadamente, no hay una exit two levels of for
declaración, pero hay algunas soluciones alternativas para hacer lo que desea:
Goto . En general, el uso goto
se considera una mala práctica (y con razón), pero el uso goto
exclusivo para un salto hacia adelante de las declaraciones 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, con la que se puede salir return
. Sin embargo, esto puede requerir que pase muchos parámetros, dependiendo de cuántas variables locales use dentro del bucle. Una alternativa sería colocar el bloque en una lambda de varias líneas, ya que esto creará un cierre sobre las variables locales.
Variable booleana : esto podría hacer que su código sea un poco menos legible, dependiendo de cuántas capas de bucles anidados tenga:
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
otro que la función si realmente tiene sentido.
goto
en un gran proyecto solo para recordar mis días de programación en qbasic, ah, en tiempos tan inocentes. de lo contrario, iría a hacer un maniquí.
Try
/ Exit Try
, pero no soy fanático de la goto
opción.
Pon los bucles en una subrutina y llama return
goto
solución más simple . Por supuesto, si el código es reutilizable, debería estar en una función ya de todos modos.
Convierta el bucle externo en un bucle while y "Exit While" en la instrucción if.
goto
con más instrucciones, más verbosidad y más sangría. ¿Cuál es el punto de?
Experimenté escribiendo "salir por" varias veces y noté que funcionaba 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 regrese 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
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
Si quiero salir de un bucle for-to, simplemente configuro el índice más allá del límite:
For i = 1 To max
some code
if this(i) = 25 Then i = max + 1
some more code...
Next`
Poppa
Exit For item
variante de la declaración, similar aNext item
. En los "buenos viejos tiempos" se podía explícitamenteNext
el bucle externo. Hoy, VB da un error. Por supuesto, es más "constructivo" en suExit For
lugar.