Jak wyjść z zagnieżdżonej pętli for lub w vb.net?
Próbowałem użyć wyjścia dla, ale przeskoczyło lub złamało tylko jedną pętlę for.
Jak mogę to zrobić dla następujących:
for each item in itemList
for each item1 in itemList1
if item1.text = "bla bla bla" then
exit for
end if
end for
end for
vb.net
for-loop
nested-loops
KoolKabin
źródło
źródło
Exit For item
wariant instrukcji, podobny doNext item
. W „starych dobrych czasach” można było wyraźnie użyćNext
zewnętrznej pętli. Dzisiaj VB daje błąd. OczywiścieExit For
zamiast tego jest bardziej „konstruktywne” .Odpowiedzi:
Niestety nie ma żadnego
exit two levels of for
oświadczenia, ale istnieje kilka obejść, aby zrobić to, co chcesz:Idź . Ogólnie rzecz biorąc, używanie
goto
jest uważane za złą praktykę (i słusznie), ale używaniegoto
wyłącznie do skoku do przodu z ustrukturyzowanych instrukcji sterujących jest zwykle uważane za prawidłowe, zwłaszcza jeśli alternatywą jest posiadanie bardziej skomplikowanego kodu.Ślepy blok zewnętrzny
lub
Oddzielna funkcja : Umieść pętle w osobnej funkcji, z której można wyjść za pomocą
return
. Może to jednak wymagać przekazania wielu parametrów, w zależności od tego, ile zmiennych lokalnych używasz w pętli. Alternatywą byłoby umieszczenie bloku w wielowierszowej lambdzie, ponieważ spowoduje to zamknięcie zmiennych lokalnych.Zmienna logiczna : może to sprawić, że kod będzie nieco mniej czytelny, w zależności od liczby posiadanych warstw zagnieżdżonych pętli:
źródło
goto
innego niż funkcja, jeśli ma to sens.goto
w dużym projekcie tylko po to, aby przypomnieć sobie moje programistyczne dni w qbasic, ach takie niewinne czasy. w przeciwnym razie wybrałbym manekina.Try
/Exit Try
, ale nie jestem fanem tejgoto
opcji.Umieść pętle w podprogramie i wywołaj
return
źródło
goto
rozwiązaniu. Oczywiście, jeśli kod jest wielokrotnego użytku, i tak powinien już znajdować się w funkcji.Uczyń zewnętrzną pętlę pętlą while i „Exit While” w instrukcji if.
źródło
goto
przypadku większej liczby instrukcji, większej szczegółowości i większej liczby wcięć. Jaki jest sens?Kilka razy eksperymentowałem z wpisywaniem „exit for” i zauważyłem, że zadziałało, a VB nie wrzeszczał na mnie. To chyba opcja, ale po prostu źle wyglądała.
Myślę, że najlepsza opcja jest podobna do tej, którą podzielał Tobiasz. Po prostu umieść swój kod w funkcji i pozwól mu wrócić, gdy chcesz wyrwać się z pętli. Wygląda też czysto.
źródło
źródło
Jeśli chcę wyjść z pętli for-to, po prostu ustawiam indeks poza limit:
Poppa.
źródło