在vb.net中嵌套/退出

时间:2011-03-15 13:17:25

标签: vb.net for-loop nested-loops

如何退出vb.net中的嵌套for或循环?

我尝试使用exit,但它只跳转或断开一个for循环。

如何进行以下操作:

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

6 个答案:

答案 0 :(得分:188)

不幸的是,没有exit two levels of for声明,但有一些解决方法可以做你想要的事情:

  • <强>转到即可。一般来说,使用gotoconsidered to be bad practice(并且正确地如此),但仅使用goto来跳转结构化控制语句通常被认为是正常的,特别是如果替代方案是有更复杂的代码。

    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:
    
  • 虚拟外部块

    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
    

    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
    
  • 单独的功能:将循环放在一个单独的函数中,可以使用return退出。但是,这可能需要您传递大量参数,具体取决于您在循环中使用的局部变量数量。另一种方法是将块放入多行lambda,因为这会在局部变量上创建一个闭包。

  • 布尔变量:这可能会使您的代码的可读性降低,具体取决于您拥有多少层嵌套循环:

    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
    

答案 1 :(得分:16)

将循环放在子程序中并调用return

答案 2 :(得分:3)

使外循环成为while循环,并在if语句中使用“Exit While”。

答案 3 :(得分:3)

我已尝试输入“退出”几次,并发现它有效,VB没有对我大喊大叫。这是我猜的一个选项,但它看起来很糟糕。

我认为最好的选择类似于托比亚斯所分享的选项。只需将代码放在一个函数中,并在想要打破循环时返回它。看起来也更干净。

For Each item In itemlist
    For Each item1 In itemlist1
        If item1 = item Then
            Return item1
        End If
    Next
Next

答案 4 :(得分:2)

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

答案 5 :(得分:0)

如果要退出for-to循环,只需将索引设置为超出限制即可:

    For i = 1 To max
        some code
        if this(i) = 25 Then i = max + 1
        some more code...
    Next`

Poppa。