VB.NET - 如何移动到下一个项目For Each Loop?

时间:2009-05-06 13:53:46

标签: vb.net loops

是否有类似Exit For的声明,除了退出循环外,它只会移动到下一个项目。

例如:

For Each I As Item In Items

    If I = x Then 
        ' Move to next item
    End If

    ' Do something

Next

我知道可以简单地在If语句中添加Else,因此它将如下所示:

For Each I As Item In Items

    If I = x Then 
        ' Move to next item
    Else
        ' Do something
    End If

Next

只是想知道是否有办法跳转到Items列表中的下一个项目。我敢肯定,大多数人都会问为什么不只是使用Else语句,但对我来说,包装“Do Something”代码似乎不太可读。特别是当有更多的代码时。

6 个答案:

答案 0 :(得分:163)

For Each I As Item In Items
    If I = x Then Continue For

    ' Do something
Next

答案 1 :(得分:45)

我改为使用Continue语句:

For Each I As Item In Items

    If I = x Then
        Continue For
    End If

    ' Do something

Next

请注意,这与移动迭代器本身略有不同 - 再次执行If之前的任何事情。通常这是您想要的,但如果不是,您必须明确使用GetEnumerator()然后MoveNext() / Current,而不是使用For Each循环。

答案 2 :(得分:3)

怎么样:

If Not I = x Then

  ' Do something '

End If

' Move to next item '

答案 3 :(得分:1)

我想清楚以下代码不是一个好习惯。您可以使用GOTO标签:

For Each I As Item In Items

    If I = x Then
       'Move to next item
        GOTO Label1
    End If

    ' Do something
    Label1:
Next

答案 4 :(得分:0)

当我尝试Continue For失败时,我遇到了编译错误。在这样做时,我发现了“简历”:

For Each I As Item In Items

    If I = x Then
       'Move to next item
       Resume Next
    End If

    'Do something

Next

注意:我在这里使用VBA。

答案 5 :(得分:0)

只有“ Continue For”是可接受的标准(其余导致出现“意大利面条代码”)。

至少使用“ continue for”,程序员知道代码直接进入循环的顶部。

对于纯粹主义者来说,最好是这样的,因为它是纯粹的“非意大利面条”代码。

Dim bKeepGoing as Boolean 
For Each I As Item In Items
  bKeepGoing = True
  If I = x Then
    bKeepGoing = False
  End If
  if bKeepGoing then
    ' Do something
  endif
Next

不过,为了便于编码,可以选择“ Continue For”。 (不过要发表评论)。

使用“继续”

For Each I As Item In Items
  If I = x Then
    Continue For   'skip back directly to top of loop
  End If
  ' Do something
Next