문제
에서는 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);
}
를 실행하지 않습니다 DoSomeThingWith
대 i = 0
, 지만,루프 계속 고 DoSomeThingWith
대 i = 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:;
}
break
지 foreach
루프를 완전히 continue
는 것이너 DataRow
.
보다 더 있습니다 몇 가지고 싶어하지 않는 사람들 break
고 continue
.최신 불만 내가 본 대한 그들 자바스크립트:좋은 부품 더글러스에 의하여 Crockford.그러나 나는 가끔 중 하나를 사용하여 그들을 정말 단순화한 것들,특히 귀하의 언어로 포함되어 있지 않은 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[인쇄]
그래서 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