[C#] C # 루프-중단 대 계속

C # (다른 언어에 대해서는 자유롭게 대답하십시오) 루프에서 루프의 구조를 벗어나고 다음 반복으로 이동하는 수단으로 break와 continue의 차이점은 무엇입니까?

예:

foreach (DataRow row in myTable.Rows)
{
    if (someConditionEvalsToTrue)
    {
        break; //what's the difference between this and continue ?
        //continue;
    }
}



답변

break완전히 루프를 종료합니다 continue단지 것이다 건너 뛸 현재 반복합니다.

예를 들면 다음과 같습니다.

for (int i = 0; i < 10; i++) {
    if (i == 0) {
        break;
    }

    DoSomeThingWith(i);
}

중단은 루프가 첫 번째 반복에서 종료되도록합니다 DoSomeThingWith. 절대 실행되지 않습니다. 여기에 :

for (int i = 0; i < 10; i++) {
    if(i == 0) {
        continue;
    }

    DoSomeThingWith(i);
}

실행하지 않음 DoSomeThingWith에 대한 i = 0,하지만 루프는 것이다 계속 하고 DoSomeThingWith위해 실행됩니다 i = 1i = 9.


답변

이것을 이해하는 가장 쉬운 방법은 각 키워드 뒤에 단어 “loop”를 두는 것입니다. 용어가 일상적인 문구처럼 읽 히면 이제 의미가 있습니다.

break 루프-루핑이 끊어지고 중지됩니다.

continue loop-루프는 다음 반복에서 계속 실행됩니다.


답변

break 는 프로그램 카운터가 가장 안쪽 루프의 범위를 벗어나게합니다.

for(i = 0; i < 10; i++)
{
    if(i == 2)
        break;
}

이런 식으로 작동

for(i = 0; i < 10; i++)
{
    if(i == 2)
        goto BREAK;
}
BREAK:;

루프의 끝으로 계속 점프합니다. for 루프에서 계속 증가 식으로 이동합니다.

for(i = 0; i < 10; i++)
{
    if(i == 2)
        continue;

    printf("%d", i);
}

이런 식으로 작동

for(i = 0; i < 10; i++)
{
    if(i == 2)
        goto CONTINUE;

    printf("%d", i);

    CONTINUE:;
}


답변

나는 휴식을 계속해야하는지 아니면 계속해야하는지 항상 혼란스러워했습니다. 이것이 내가 기억하는 데 도움이되는 것입니다.

중단 대 계속 사용시기

  1. Break- 헤어지는 것과 같습니다. 슬프다. 너희들은 이별하고있다. 루프가 종료됩니다.

단절

  1. 계속 -오늘 휴식을 취하고 내일 모두 정리합니다 (즉, 현재 반복 건너 뛰기).

계속하다


답변

breakforeach루프를 완전히 멈추고 continue다음으로 건너 뜁니다 DataRow.


답변

같이하지 않는 이상 몇 사람이있다 break하고 continue. 내가 본 최근 불만은 JavaScript : Douglas Crockford의 The Good Parts 입니다. 그러나 때로는 그중 하나를 사용하면 실제로 언어가 do-while또는do-until 루프의 스타일을.

나는 break무언가에 대한 목록을 검색하는 루프 에서 사용하는 경향이 있습니다 . 일단 발견되면 계속 진행할 점이 없으므로 종료 할 수도 있습니다.

나는 continue목록의 대부분의 요소로 무언가를 할 때 사용 하지만 여전히 몇 가지를 건너 뛰고 싶습니다.

break문장은 또한 누군가 또는 다른 사람으로부터 유효한 응답을 폴링 할 때 유용합니다. 대신에:

Ask a question
While the answer is invalid:
    Ask the question

중복을 제거하고 사용할 수 있습니다.

While True:
    Ask a question
    If the answer is valid:
        break

do-until내가 전에 언급 한 루프는 특정 문제에 대한 더 우아한 솔루션입니다 :

Do:
    Ask a question
    Until the answer is valid

복제도 break필요 없고 필요도 없습니다.


답변

모두 매우 좋은 설명을했습니다. 도움이된다면 예제를 제공하기 위해 여전히 답변을 게시하고 있습니다.

// break statement
for (int i = 0; i < 5; i++) {
    if (i == 3) {
        break; // It will force to come out from the loop
    }

    lblDisplay.Text = lblDisplay.Text + i + "[Printed] ";
}

출력은 다음과 같습니다.

0 [인쇄] 1 [인쇄] 2 [인쇄]

따라서 i == 3 일 때 중단이 발생하므로 3 [Printed] & 4 [Printed]가 표시되지 않습니다.

//continue statement
for (int i = 0; i < 5; i++) {
    if (i == 3) {
        continue; // It will take the control to start point of loop
    }

    lblDisplay.Text = lblDisplay.Text + i + "[Printed] ";
}

출력은 다음과 같습니다.

0 [인쇄] 1 [인쇄] 2 [인쇄] 4 [인쇄]

따라서 i == 3 일 때 계속 진행되므로 3 [Printed]가 표시되지 않습니다.