协慌网

登录 贡献 社区

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

对于i = 0 ,不会执行DoSomeThingWith ,但循环将继续,并且对于i = 1i = 9将执行DoSomeThingWith

理解这一点的一个非常简单的方法是在每个关键字后面加上 “循环” 一词。如果他们只是像日常用语一样阅读,那么这些术语现在就有意义

break循环 - 循环中断并停止。

continue循环 - 循环继续执行下一次迭代。

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