Natknąłem się na to pytanie przed chwilą i ściągam z tego trochę materiału: czy istnieje nazwa konstruktu „break n”?
Wydaje się to być niepotrzebnie złożonym sposobem na instruowanie programu, aby wyszedł z podwójnie zagnieżdżonej pętli for:
for (i = 0; i < 10; i++) {
bool broken = false;
for (j = 10; j > 0; j--) {
if (j == i) {
broken = true;
break;
}
}
if (broken)
break;
}
Wiem, że podręczniki mówią, że stwierdzenia goto to diabeł, a ja wcale ich nie lubię, ale czy to uzasadnia wyjątek od reguły?
Szukam odpowiedzi, które dotyczą n-zagnieżdżonych pętli.
UWAGA: Niezależnie od tego, czy odpowiesz tak, nie, czy gdzieś pomiędzy, odpowiedzi całkowicie bliskie nie są mile widziane. Zwłaszcza jeśli odpowiedź brzmi „nie”, należy podać uzasadniony powód (i tak nie jest to zbyt daleko od przepisów Stack Exchange).
goto
: goto (C # Reference) - „Instrukcja goto jest również przydatna, aby wydostać się z głęboko zagnieżdżonych pętli”.
goto
jest faktycznie wymagany w przełączniku C #, aby przejść do innej sprawy po wykonaniu dowolnego kodu w pierwszej sprawie. To jednak jedyny przypadek, w którym użyłem goto.
for (j = 10; j > 0 && !broken; j--)
, to nie potrzebujeszbreak;
instrukcji. Jeśli przeniesiesz deklaracjębroken
do przed rozpoczęciem pętli zewnętrznej, to jeśli można to zapisać tak,for (i = 0; i < 10 && !broken; i++)
to myślę, że niebreak;
są konieczne.