C# break、continue、goto:跳出循环

在使用循环语句时,并不是必须等待循环完成后才能退出循环,我们也可以主动退出循环,C# 为我们提供了 break、continue 和 goto 三种方式来跳出循环,下面就来分别介绍一下。

1、break

break 语句我们在前面学习《switch 语句》的时候已经有了简单的了解,它不仅可以用来终止 switch 语句,在循环语句中使用时还可以用来跳出循环,执行循环外的下一条语句。

如果是在嵌套循环中使用,例如在内层的循环中使用 break 语句,那么程序只会跳出内层的循环,并不会影响到外层循环的执行。break 语句的执行原理如下图所示:

break 执行原理
图:break 执行原理

【示例】使用 for 循环输出 1~9 之间的数字,当输出到 5 时跳出循环:
using System;

namespace c.biancheng.net
{
    class Demo
    {
        static void Main(string[] args){
            for(int i = 1; i <= 9; i++){
                if(i == 5){
                    break;
                }
                Console.Write("{0} ", i);
            }
            Console.ReadLine();
        }
    }
}
运行结果如下:

1 2 3 4

2、continue

C# 中 continue 语句的工作原理与 break 语句类似,但是 continue 语句并不会跳出整个循环,而是跳过本次循环继续执行下一次的循环。continue 的执行原理如下图所示。

continue执行原理
图:continue执行原理

【示例】使用 for 循环输出 1~9 之间的数字,遇到 5 时跳过:
using System;

namespace c.biancheng.net
{
    class Demo
    {
        static void Main(string[] args){
            for(int i = 1; i <= 9; i++){
                if(i == 5){
                    continue;
                }
                Console.Write("{0} ", i);
            }
            Console.ReadLine();
        }
    }
}
运行结果如下:

1 2 3 4 6 7 8 9

3、goto

C# 中的 goto 语句也称为跳转语句,使用它可以控制程序跳转到指定的位置执行。不过并不建议在程序中多次使用 goto 语句,因为它会使程序变得更加复杂。goto 语句的语法格式如下所示:

goto Labels;
语句块1;
Labels:
    语句块2;

想要使用 goto 语句来跳转程序,必须先在想要跳转的位置定义好一个标签(Labels),标签名称的定义和变量名类似,然后使用 goto 标签名;即可使程序跳转到指定位置执行。如上面语法中所示,程序会跳过“语句块1”直接执行“语句块2”。

提示:goto 语句并不限于在循环中使用,其它的情况也可以使用。但是,goto 语句不能从循环外跳转到循环语句中,而且不能跳出类的范围。

【示例】使用 goto 语句将程序跳转到指定位置执行。
using System;

namespace c.biancheng.net
{
    class Demo
    {
        static void Main(string[] args){
            int count = 1;
            login:
                Console.WriteLine("请输入用户名");
                string username = Console.ReadLine();
                Console.WriteLine("请输入密码");
                string userpwd = Console.ReadLine();
            if (username == "c.biancheng.net" && userpwd == "123456"){
                Console.WriteLine("登录成功");
            }else{
                count++;
                if (count > 3){
                    Console.WriteLine("用户名或密码错误次数过多!退出!");
                }else{
                    Console.WriteLine("用户名或密码错误");
                    goto login;//返回login标签处重新输入用户名密码
                }
            }
        }
    }
}
运行结果如下:

请输入用户名
C语言中文网
请输入密码
123456
用户名或密码错误
请输入用户名
c.biancheng.net
请输入密码
123456
登录成功