是否有类似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”代码似乎不太可读。特别是当有更多的代码时。
答案 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