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」コードのラッピングは読みにくいようです。特に、より多くのコードがある場合。
For Each I As Item In Items
If I = x Then Continue For
' Do something
Next
代わりに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
を明示的に使用する必要があります。
どうですか:
If Not I = x Then
' Do something '
End If
' Move to next item '
次のコードはお勧めできません。 GOTOラベルを使用できます:
For Each I As Item In Items
If I = x Then
'Move to next item
GOTO Label1
End If
' Do something
Label1:
Next
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を使用しています。