while visual net loop for eac ciclo vb.net for-loop nested-loops

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 de goto ú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