Есть ли такой статус 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
оператор, но мне кажется, что упаковка кода «Сделай что-нибудь» менее читабельна. Особенно, когда кода намного больше.
If
заявление как следует. Это заблуждение.Continue
Вместо этого я бы использовал инструкцию:For Each I As Item In Items If I = x Then Continue For End If ' Do something Next
Обратите внимание, что это немного отличается от перемещения самого итератора - все, что до того, как
If
будет выполнено снова. Обычно это то, что вы хотите, но если нет, вам придется использоватьGetEnumerator()
and thenMoveNext()
/Current
явно вместо использованияFor Each
цикла.источник
Что о:
If Not I = x Then ' Do something ' End If ' Move to next item '
источник
Я хочу прояснить, что следующий код не является хорошей практикой. Вы можете использовать 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
источник
Когда я попробовал
Continue For
это Failed, я получил ошибку компилятора. При этом я обнаружил «Резюме»:For Each I As Item In Items If I = x Then 'Move to next item Resume Next End If 'Do something Next
Примечание: здесь я использую VBA.
источник
Resume Next
предназначен для неструктурированной обработки ошибок.If I <> x Then
Только «Продолжить для» является приемлемым стандартом (остальное приводит к «спагетти-коду»).
По крайней мере, с «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
Однако для простоты кодирования "Продолжить для" в порядке. (Хотя неплохо было бы это прокомментировать).
Использование "Продолжить для"
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
источник