IT TIP

C #에서 한 번에 여러 루프를 중단하는 방법은 무엇입니까?

itqueen 2020. 11. 22. 21:02
반응형

C #에서 한 번에 여러 루프를 중단하는 방법은 무엇입니까?


중첩 된 루프가 있고 모든 루프를 한 번에 중단하려면 어떻게해야합니까?

while (true) {
    // ...
    while (shouldCont) {
        // ...
        while (shouldGo) {
            // ...
            if (timeToStop) {
                break; // Break out of everything?
            }
        }
    }
}

PHP에서 break이탈 할 루프 수에 대한 인수를받습니다. 이와 같은 작업을 C #에서 수행 할 수 있습니까?

뭔가 끔찍한 건 goto어때?

// In the innermost loop
goto BREAK
// ...
BREAK: break; break; break;

중첩 된 루프를 함수로 추출한 다음 return을 사용하여 중단하지 않고 어디에서나 루프를 벗어날 수 있습니다.


다른 제어 플래그를 도입하고 아래와 같이 모든 중첩 while 조건에 넣으십시오. 또한 while (true) 조건을 해당 조건으로 바꿉니다.

bool keepLooping = true;
while (keepLooping) {
    // ...
    while (shouldCont && keepLooping) {
        // ...
        while (shouldGo && keepLooping) {
            // ...
            if (timeToStop) { 
                keepLooping  = false;
                break; // break out of everything?
            }
        }  
    }
}

고토는 학대받을 때만 끔찍합니다. 일부 중첩의 가장 안쪽 루프에서 벗어나려면 허용됩니다. 하지만 ... 애초에 왜 그렇게 많은 중첩이 있는지 물어봐야합니다.

짧은 대답 : 아니요.


전체 방법에서 벗어나려면 아래 코드를 사용하십시오. 메서드를 벗어나지 않고 메서드 내에서 일련의 루프 만 중단하려는 경우 이미 게시 된 답변 중 하나가 작업을 수행합니다.

if (TimeToStop)
{
   return;
}

참고 URL : https://stackoverflow.com/questions/2339142/how-to-break-out-of-multiple-loops-at-once-in-c

반응형