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 语句,这样执行效率会更高。
ICP备案:
公安联网备案: