休息与继续

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

break会导致循环在第一次迭代时退出 - DoSomeThingWith永远不会被执行。 这里:

for (int i = 0; i < 10; i++) {
    if(i == 0) {
        continue;
    }

    DoSomeThingWith(i);
}

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


理解这一点的一个非常简单的方法是在每个关键词后面加上“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循环中,继续跳转到增量表达式。

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:;
}
链接地址: http://www.djcxy.com/p/5145.html

上一篇: break vs. continue

下一篇: foreach vs someList.ForEach(){}