Gibt es eine Anweisung wie Exit For
, außer dass die Schleife nicht verlassen wird, sondern nur zum nächsten Element verschoben wird .
Beispielsweise:
For Each I As Item In Items
If I = x Then
' Move to next item
End If
' Do something
Next
Ich weiß, dass ich Else
der If-Anweisung einfach eine hinzufügen könnte, damit sie wie folgt lautet:
For Each I As Item In Items
If I = x Then
' Move to next item
Else
' Do something
End If
Next
Ich frage mich nur, ob es eine Möglichkeit gibt, zum nächsten Element in der Items
Liste zu springen . Ich bin sicher, die meisten werden sich richtig fragen, warum sie nicht einfach die Else
Anweisung verwenden, aber für mich scheint das Umschließen des Codes "Do Something" weniger lesbar zu sein. Besonders wenn es viel mehr Code gibt.
If
Anweisung besser richtig schließen. Es ist irreführend.Ich würde
Continue
stattdessen die Anweisung verwenden:Beachten Sie, dass dies etwas anders ist als das Verschieben des Iterators selbst - alles, was vorher
If
ausgeführt wird, wird erneut ausgeführt. Normalerweise ist dies das, was Sie wollen, aber wenn nicht, müssen SieGetEnumerator()
und dannMoveNext()
/Current
explizit verwenden, anstatt eineFor Each
Schleife zu verwenden.quelle
Wie wäre es mit:
quelle
Ich möchte klarstellen, dass der folgende Code keine gute Praxis ist. Sie können GOTO Label verwenden:
quelle
Als ich es ausprobiert
Continue For
habe, ist ein Compilerfehler aufgetreten. Dabei habe ich 'Resume' entdeckt:Hinweis: Ich verwende hier VBA.
quelle
Resume Next
ist für die unstrukturierte Fehlerbehandlung.If I <> x Then
Nur "Weiter für" ist ein akzeptabler Standard (der Rest führt zu "Spaghetti-Code").
Zumindest mit "continue for" weiß der Programmierer, dass der Code direkt an den Anfang der Schleife geht.
Für Puristen ist so etwas jedoch am besten, da es sich um reinen "Nicht-Spaghetti" -Code handelt.
Zur Vereinfachung der Codierung ist "Weiter für" in Ordnung. (Gute Idee, es zu kommentieren).
Verwenden von "Weiter für"
quelle