문제

에서는 C#(바랍에 대한 답변을 다른 언어),루프 사이의 차이점은 무엇 휴식을 계속하는 수단으로 떠나 구조물의 반복,그리고 다음으로 이동 반복?

예제:

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);
}

를 실행하지 않습니다 DoSomeThingWithi = 0, 지만,루프 계속DoSomeThingWithi = 1 하기 i = 9.

다른 팁

정말 쉬운 방법을 이해하는 단어"loop"후 각각의 키워드가 있습니다.약관에 지금해하는 경우 그들은 그냥 읽기 같은 일상적인 구문입니다.

break 루프 반복은 깨진 및 중지됩니다.

continue 루프루프가 계속 실행으로 다음 반복.

휴식 원인 프로그램 카운터의 범위의 가장 안쪽 반복

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

이 같은 작품

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

계속 점프를 말합니다.에 대한 루프로 계속 이동하게 증가 표현이다.

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:;
}

breakforeach 루프를 완전히 continue 는 것이너 DataRow.

나는 항상하는 데 사용이 혼동해야 하는지 휴식을 사용하여,또는 계속합니다.이것은 무엇을 기억하는 데 도움이:

을 사용하는 경우 휴식 vs 계속 진행하시겠습니까?

  1. 휴식 -그것은 다음과 같습니다.그것은 슬픈 일이죠 이별.

Break

  1. 계속 -즉,당신은 오늘은 나머지고 그것을 모두 분류하는 내일을(즉skip 현재 반복)!

Continue

보다 더 있습니다 몇 가지고 싶어하지 않는 사람들 breakcontinue.최신 불만 내가 본 대한 그들 자바스크립트:좋은 부품 더글러스에 의하여 Crockford.그러나 나는 가끔 중 하나를 사용하여 그들을 정말 단순화한 것들,특히 귀하의 언어로 포함되어 있지 않은 do-whiledo-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[인쇄]

그래서 3[인쇄]&4[인쇄]로 표시되지 않가 깰 때==3

//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[인쇄]

그래서 3[인쇄]로 표시되지 않 있을 때 계속 나==3

휴식

깰 힘 루프 즉시 종료됩니다.

계속

이와는 반대의 휴식이다.종료하는 대신 루프를,그것은 바로 루프 다시 건너뛰고 나머지 부분의 코드입니다.

에 의해 예

foreach(var i in Enumerable.Range(1,3))
{
    Console.WriteLine(i);
}

인쇄 1,2,3(별도의 줄에).

추가 휴식 상태에서 i=2

foreach(var i in Enumerable.Range(1,3))
{
    if (i == 2)
        break;

    Console.WriteLine(i);
}

지금 루프 인쇄물 1 정지합니다.

대체 휴가를 계속합니다.

foreach(var i in Enumerable.Range(1,3))
{
    if (i == 2)
        continue;

    Console.WriteLine(i);
}

지금 루프 인쇄 제 1 항 및 3(건너뛰 2).

따라서, break 루프를 하는 반면 continue 다음 iteration.

불행하게도 루비는 약간 다릅니다.PS:나의 기억은 약간 헷갈리에서 이렇게 사과하는 경우 내가 잘못

신의 휴식/계속,그것은 휴식/다음에는 동일하게 동작 측면에서의 루프

루프(다음과 같 다른 모든 것)은 표정,그리고"반품"마지막 것은 그들이 했습니다.대부분의 시간이 점점에서 반환된 값을 반복은 무의미하는,그래서 모두가 그냥 이

a = 5
while a < 10
    a + 1
end

할 수 있습 그러나 이렇

a = 5
b = while a < 10
    a + 1
end # b is now 10

그러나,많은 루비 코드'에뮬레이트'루프를 사용하여 블록입니다.정식 예

10.times do |x|
    puts x
end

그것은 훨씬 더 많은 일반적인 사람들이 일을 하고 싶으면 그 결과의 블록,이것은 어디 지저분하다.휴식/다음에 다른 것을 의미에서의 컨텍스트니다.

브레이크 밖으로 이동이라는 코드 블럭

다음 건너뛰기의 나머지 부분의 코드 블록,그리고'복귀'지정한 것을 발신자의 블록입니다.이지 않는 어떤 의미를 만들지 않고 예입니다.

def timesten
    10.times{ |t| puts yield t }
end


timesten do |x|
   x * 2
end
# will print
2
4
6
8 ... and so on


timesten do |x|
    break
    x * 2
end
# won't print anything. The break jumps out of the timesten function entirely, and the call to `puts` inside it gets skipped

timesten do |x|
    break 5
    x * 2
end
# This is the same as above. it's "returning" 5, but nobody is catching it. If you did a = timesten... then a would get assigned to 5

timesten do |x|
    next 5
    x * 2
end 
# this would print
5
5
5 ... and so on, because 'next 5' skips the 'x * 2' and 'returns' 5.

그래서 그래요.루비은 멋진하지만,일부 끔찍한 모퉁이의 경우입니다.이것은 두 번째는 최악의 한 나는 본 적이에서는 내년의 사용:-)

간단한 대답:

휴식 이탈 루프 immediately.
계속 시작 처리고 다음 항목입니다.(있다면,어떤 점프하여를 평가하는 라인의 대 한/중)

나오는 명백한 상태:참고로 추가하지 않 휴식도 계속됩니다,이력서 귀하의 프로그램즉나는 갇혀 일정에 오류,다음 로그인 한 후,내가 원하는 처리가 다시 시작,그리고 거기에 더 많은 코드 작업에서 사는 다음 행,그래서 나는 그냥 그것을 통해 떨어질 수 있습니다.

를 완전히 중단 밖으로 foreach 루프 휴식 사용;

을 반복하는 루프에 계속 사용;

휴식 이 유용한 경우 반복을 통해 개체의 컬렉션(처럼 행 Datatable)그리고 당신은 특히 일치할 때,당신을 찾는 일치할 필요가 없을 통해 계속해서 나머지 행하려고 합니다.

계속 유용이 있을 때 수행할 필요가 무엇을 측면에서 루프 반복.당신은 일반적으로 계속 후에 는 경우.

원하지 않는 경우에 사용하기 휴식 당신이 증가 값을 나는 그런 방법으로 그것을 반복의 조건이 거짓과 루프를 실행하지 않습니다 다음에 반복이다.

for(int i = 0; i < list.Count; i++){
   if(i == 5)
    i = list.Count;  //it will make "i<list.Count" false and loop will exit
}

로 다른 언어:

'VB
For i=0 To 10
   If i=5 then Exit For '= break in C#;
   'Do Something for i<5
next

For i=0 To 10
   If i=5 then Continue For '= continue in C#
   'Do Something for i<>5...
Next
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top