C# switch语句的用法(附带实例)
在 C# 程序开发中,一个常见的问题就是检测一个变量是否符合某个条件,如果不符合,再用另一个值来检测它,以此类推。
当然,这种问题可以使用 if 选择语句完成。例如,使用 if 语句检测变量是否符合某个条件,代码如下:
大括号 {} 中的代码是由多个 case 子句组成的,每个 case 关键字后面都有相应的语句块,这些语句块都是 switch 语句可能执行的语句块。如果符合常量值,则 case 下的语句块就会被执行,语句块执行完毕后,执行 break 语句,使程序跳出 switch 语句;如果条件都不满足,则执行 default 中的语句块。
注意:
switch 语句的执行流程如下图所示:

图 1 switch语句的执行流程图
【实例】使用 switch 多分支语句实现查询高考录取分数线的功能,假设:
代码如下:

图 2 判断参数为浮点类型时出现的错误提示
2) 使用 switch 语句时,每一个 case 语句或者 default 后面必须有一个 break 关键字,否则将会出现如下图所示的错误提示。

图 3 缺少break关键字时的错误提示
程序开发中,如果遇到多分支选择的情况,并且判断的条件不是关系表达式、逻辑表达式或者浮点类型,就可以使用 switch 语句代替 if…else if…else 语句,这样执行效率会更高。
当然,这种问题可以使用 if 选择语句完成。例如,使用 if 语句检测变量是否符合某个条件,代码如下:
char grade = 'B'; if (grade == 'A') { Console.WriteLine("真棒"); } if (grade == 'B') { Console.WriteLine("做得不错"); } if (grade == 'C') { Console.WriteLine("再接再厉"); }在执行上面的代码时,每一条 if 语句都会进行判断,这样显得非常烦琐,为了简化这种编写代码的方式,C# 中提供了 switch 语句,将判断动作组织起来,以一个比较简单的方式实现“多选一”的逻辑。
C# switch语句的用法
switch 语句是多分支条件判断语句,它根据参数的值使程序从多个分支中选择一个用于执行的分支,其基本语法如下:switch(判断参数) { case 常量值1: 语句块1 break; case 常量值2: 语句块2 break; ... case 常量值n: 语句块 break; default: 语句块n+1 break; }switch 关键字后面的括号 () 中是要判断的参数,参数必须是 byte、byte、short、ushort、int、uint、long、ulong、char、string、bool 或者枚举类型中的一种。
大括号 {} 中的代码是由多个 case 子句组成的,每个 case 关键字后面都有相应的语句块,这些语句块都是 switch 语句可能执行的语句块。如果符合常量值,则 case 下的语句块就会被执行,语句块执行完毕后,执行 break 语句,使程序跳出 switch 语句;如果条件都不满足,则执行 default 中的语句块。
注意:
- case 后的各常量值不可以相同,否则会出现错误;
- case 后面的语句块可以包含多条语句,不必使用大括号 {} 括起来;
- case 语句和 default 语句的顺序可以改变,但不会影响程序的执行结果;
- 一个 switch 语句中只能有一个 default 语句,而且 default 语句可以省略;
switch 语句的执行流程如下图所示:

图 1 switch语句的执行流程图
【实例】使用 switch 多分支语句实现查询高考录取分数线的功能,假设:
- 民办本科:350分;
- 艺术类本科:290分;
- 体育类本科:280分;
- 二本:445分;
- 一本:555分。
代码如下:
static void Main(string[] args) { // 输出提示问题 Console.WriteLine("请输入要查询的录取分数线(比如民办本科、艺术类本科、体育类本科、二本、一本)"); string strNum = Console.ReadLine(); // 获取用户输入的数据 switch (strNum) { case "民办本科": // 查询民办本科分数线 Console.WriteLine("民办本科录取分数线:350"); break; case "艺术类本科": // 查询艺术类本科分数线 Console.WriteLine("艺术类本科录取分数线:290"); break; case "体育类本科": // 查询体育类本科分数线 Console.WriteLine("体育类本科录取分数线:280"); break; case "二本": // 查询二本分数线 Console.WriteLine("二本录取分数线:445"); break; case "一本": // 查询一本分数线 Console.WriteLine("一本录取分数线:555"); break; default: // 如果不是以上输入,则提示输入有误 Console.WriteLine("您输入的查询信息有误!"); break; } Console.ReadLine(); }程序运行效果如下:
请输入要查询的录取分数线(比如民办本科、艺术类本科、体育类本科、二本、一本) 二本 二本录取分数线:445
C# switch语句的注意事项
1) 使用 switch 语句时,常量表达式的值不可以是浮点类型。例如,下面的代码就是不合法的:double dNum = Convert.ToDouble(Console.ReadLine()); switch (dNum) { case 1.0: Console.WriteLine("分支一"); break; case 2.0: Console.WriteLine("分支二"); break; }运行上面的代码时,将会出现如下图所示的错误提示:

图 2 判断参数为浮点类型时出现的错误提示
2) 使用 switch 语句时,每一个 case 语句或者 default 后面必须有一个 break 关键字,否则将会出现如下图所示的错误提示。

图 3 缺少break关键字时的错误提示
C# switch和if语句的区别
C# 中的 if…else if…else 语句也可以用来实现多分支选择的情况,但它主要是对布尔表达式、关系表达式或者逻辑表达式进行判断,而 switch 多分支语句主要对常量值进行判断。程序开发中,如果遇到多分支选择的情况,并且判断的条件不是关系表达式、逻辑表达式或者浮点类型,就可以使用 switch 语句代替 if…else if…else 语句,这样执行效率会更高。