Answers:
不幸的是,没有exit two levels of for
声明,但是有一些变通办法可以执行您想要的操作:
转到。通常,使用(goto
虽然是正确的)被认为是不好的做法,但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
goto
如果确实有意义,那么不能说这些功能中的任何一个都比该功能更好。
goto
在一个大型项目中使用它,只是为了回想起我在qbasic编程的日子,啊,这天真无邪。否则我会去做一个假人。
Try
/ Exit Try
方法,但是我不喜欢该goto
选项。
将循环放在子例程中并调用 return
goto
解决方案中是不存在的。当然,如果代码是可重用的,无论如何它应该已经在一个函数中。
我尝试过几次输入“ exit for”(退出),发现它可以正常工作,而VB并没有对我大喊大叫。我猜这是一个选择,但是看起来很糟糕。
我认为最好的选择类似于Tobias的选择。只需将您的代码放入函数中,并在您想退出循环时返回它即可。看起来也更干净。
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
如果要退出循环循环,只需将索引设置为超出限制即可:
For i = 1 To max
some code
if this(i) = 25 Then i = max + 1
some more code...
Next`
爸爸
Exit For item
该语句的变体,类似于Next item
。在“过去的美好时光”中,您可以显式地Next
进行外部循环。今天,VB提供了一个错误。当然,它反而更具“建设性”Exit For
。