2009-05-06 44 views
73

是否有像Exit For這樣的說法,除了不是退出循環而是移動到下一個項目。VB.NET - 如何移動到下一個項目a For Each Loop?

例如:

For Each I As Item In Items 

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

    ' Do something 

Next 

我知道可能只是一個Else添加if語句,因此內容如下:

For Each I As Item In Items 

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

Next 

只是不知道是否有跳的方式到Items列表中的下一個項目。我相信大多數人會正確地問爲什麼不使用Else聲明,但對我來說,包裝「做某事」代碼似乎不太可讀。特別是當有更多的代碼時。

回答

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

    ' Do something 
Next 
+0

感謝這正是我正在尋找,有趣的如何它不在MSDN文檔? (http://msdn.microsoft.com/en-us/library/5ebk1751.aspx)還祝賀打了Jon整個帖子,整整20秒! :) – 2009-05-06 14:01:48

+5

我幾乎得到了Skeeted一次! ;) – 2009-05-06 14:04:44

41

我會用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循環。

3

關於什麼:

If Not I = x Then 

    ' Do something ' 

End If 

' Move to next item ' 
2

我要明確的是,下面的代碼是不是好的做法。您可以使用GOTO標籤:

For Each I As Item In Items 

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

    ' Do something 
    Label1: 
Next 
+15

你可以,但請不要。 – MiseryIndex 2009-05-06 14:10:04

1

當我試圖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。