VB.NET - Как перейти к следующему пункту для каждого цикла? - PullRequest
86 голосов
/ 06 мая 2009

Есть ли такой статус, как Exit For, за исключением того, что вместо выхода из цикла он просто перемещается к следующему элементу.

Например:

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, но мне кажется, что перенос кода «сделать что-то» кажется менее читабельным. Особенно, когда кода намного больше.

Ответы [ 5 ]

165 голосов
/ 06 мая 2009
For Each I As Item In Items
    If I = x Then Continue For

    ' Do something
Next
45 голосов
/ 06 мая 2009

Вместо этого я бы использовал оператор 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 голосов
/ 06 мая 2009

А как же:

If Not I = x Then

  ' Do something '

End If

' Move to next item '
1 голос
/ 06 мая 2009

Я хочу пояснить, что следующий код не является хорошей практикой. Вы можете использовать GOTO Label:

For Each I As Item In Items

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

    ' Do something
    Label1:
Next
0 голосов
/ 28 сентября 2011

Когда я попытался 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...