Saltar al contenido

Romper / salir anidado en vb.net

Solución:

Desafortunadamente, no hay exit two levels of for declaración, pero hay algunas soluciones para hacer lo que desea:

  • Ir a. En general, usando goto se considera una mala práctica (y con razón), pero usar goto solo para un salto hacia adelante de las declaraciones de control estructuradas generalmente se considera que está bien, 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, de la que se puede salir con return. Sin embargo, esto puede 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 multilínea, ya que esto creará un cierre sobre las variables locales.

  • Variable booleana: Esto puede 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
    

Pon los bucles en una subrutina y llama return

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
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *