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 = 1
에 i = 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:;
}
답변
나는 휴식을 계속해야하는지 아니면 계속해야하는지 항상 혼란스러워했습니다. 이것이 내가 기억하는 데 도움이되는 것입니다.
중단 대 계속 사용시기
- Break- 헤어지는 것과 같습니다. 슬프다. 너희들은 이별하고있다. 루프가 종료됩니다.
- 계속 -오늘 휴식을 취하고 내일 모두 정리합니다 (즉, 현재 반복 건너 뛰기).
답변
break
foreach
루프를 완전히 멈추고 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]가 표시되지 않습니다.