打破/退出嵌套在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 

尝试使用“退出”。

这对我有用。

😉