在C#循环中,中断和继续作为离开循环结构并进入下一次迭代的方法有什么区别?
例子:
foreach (DataRow row in myTable.Rows)
{
if (someConditionEvalsToTrue)
{
break; //what's the difference between this and continue ?
//continue;
}
}
在C#循环中,中断和继续作为离开循环结构并进入下一次迭代的方法有什么区别?
例子:
foreach (DataRow row in myTable.Rows)
{
if (someConditionEvalsToTrue)
{
break; //what's the difference between this and continue ?
//continue;
}
}
当前回答
举个例子
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并停止。
用continue替换中断。
foreach(var i in Enumerable.Range(1,3))
{
if (i == 2)
continue;
Console.WriteLine(i);
}
现在循环打印1和3(跳过2)。
因此,break会停止循环,而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);
}
对于i=0,将不执行DoSomeThingWith,但循环将继续,并且对于i=1到i=9,将执行DoSome ThingWith。
要理解这一点,一个非常简单的方法是在每个关键字后面加上单词“loop”。如果这些术语只是像日常用语一样阅读,那么它们现在就有意义了。
中断循环-循环中断并停止。
continue循环-循环继续执行下一次迭代。
break导致程序计数器跳出最内层循环的范围
for(i = 0; i < 10; i++)
{
if(i == 2)
break;
}
像这样工作
for(i = 0; i < 10; i++)
{
if(i == 2)
goto BREAK;
}
BREAK:;
continue跳转到循环的末尾。在for循环中,continue跳转到增量表达式。
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相反。它没有终止循环,而是立即再次循环,跳过其余的代码。