web-dev-qa-db-ja.com

VB.NET-For Eachループの次の項目に移動する方法

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」コードのラッピングは読みにくいようです。特に、より多くのコードがある場合。

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

    ' Do something
Next
168
Adam Robinson

代わりにContinueステートメントを使用します。

For Each I As Item In Items

    If I = x Then
        Continue For
    End If

    ' Do something

Next

これは、イテレータ自体を移動する場合とはわずかに異なることに注意してください-Ifの前にあるものは再び実行されます。通常はこれが目的ですが、そうでない場合は、For Eachループを使用するのではなく、GetEnumerator()を使用してからMoveNext()/Currentを明示的に使用する必要があります。

46
Jon Skeet

どうですか:

If Not I = x Then

  ' Do something '

End If

' Move to next item '
3
timo2oo8

次のコードはお勧めできません。 GOTOラベルを使用できます:

For Each I As Item In Items

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

    ' Do something
    Label1:
Next
2
Syed Tayyab Ali

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を使用しています。

0
Karmendra