打破/退出嵌套在vb.net
如何摆脱嵌套或在vb.net循环?
我尝试使用退出,但它跳跃或打破只有一个循环而已。
我怎样才能做到以下几点:
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
不幸的是,没有exit two levels of for
声明,但有几个解决方法可以做你想做的事情:
-
转到 。 一般来说,使用
goto
被认为是不好的做法 (也是如此),但是使用goto
来完成结构化控制语句的向前跳转通常被认为是可以的,特别是如果替代scheme是更复杂的代码。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
-
独立的function :把循环放在一个单独的函数,可以
return
退出。 这可能需要您传递很多参数,具体取决于您在循环中使用了多less个局部variables。 另一种方法是将块放入多行lambda中,因为这会在局部variables上创build一个闭包。 -
布尔variables :这可能会使你的代码更不易读,这取决于你有多less层嵌套循环:
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
把循环放在一个子程序中并调用return
我已经尝试过input“退出”几次,注意到它的工作,VB并没有吼我。 我猜这是一个选项,但看起来很糟糕。
我认为最好的select与Tobias分享的类似。 只要把你的代码放在一个函数中,当你想要打破你的循环时,让它返回。 看起来也干净。
For Each item In itemlist For Each item1 In itemlist1 If item1 = item Then Return item1 End If Next Next
使外部循环为while循环,并在if语句中“Exit While”。
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
尝试使用“退出”。
这对我有用。
😉