循环的中断

  有时需要更精细地控制循环代码的处理。C#为此提供了 4 个命令,其中的 3 个已经在其他情形中介绍过了:

    • break    --- 立即终止循环。
    • continue --- 立即终止当前的循环(继续执行下一次循环)。
    • goto     --- 可以跳出循环,到达已标记好的位置上(如果希望代码便于阅读和理解,最好不要使用该命令)。
    • return   --- 跳出循环及包含该循环的函数(参见第6章)。

break 命令可退出循环,继续执行循环后面的第一行代码,例如:

        int i = 1;
        while (i <= 10)
        {
            if(i == 6)
                break;
            Console.WriteLine("{0}", i++);
        }

这段代码输出 1~5 的数字,因为 break 命令在 i 的值为 6 时退出循环。


continue 仅终止当前的迭代,而不是整个循环,例如:

        int i;
        for (i = 1; i <= 10; i++)
        {
            if((i % 2) == 0)
                continue;
            Console.WriteLine(i);
        }

在上面的示例中,只要 i 除以 2 的余数是 0, continue 语句就终止当前的迭代,所以只显示数字 1、3、5、7 和 9。


第3个方法使用前面的 goto 语句,例如:

        int i = 1;
        while (i <= 10)
        {
            if (i == 6)
                goto exitPoint;
            Console.WriteLine("This code will never be reached.");
        exitPoint:
            Console.WriteLine("This code is run when the loop is exited using goto.");
        }

注意 ⚠️,使用 goto 语句退出循环是合法的(但显得杂乱一些),但使用 goto 语句从外部进入循环是非法的。

🔚