视频讲解
在开发中一个常见的问题就是检测一个变量是否符合某个条件,如果不符合,再用另一个值来检测它,依此类推,当然,这种问题可以使用if选择语句完成。
例如,使用if语句检测变量是否符合某个条件。
在执行上面代码时,每一条if语句都会进行判断,这样显得非常烦琐,为了简化这种编写代码的方式,C#中提供了switch语句,将判断动作组织了起来,以一个比较简单的方式实现“多选一”的逻辑。本节将对switch语句进行详细讲解。
switch语句是多分支条件判断语句,它根据参数的值使程序从多个分支中选择一个用于执行的分支,其基本语法如下:
switch关键字后面的括号()中是要判断的参数,参数必须是sbyte,byte,short,ushort,int,uint,long,ulong,char,string,bool或者枚举类型中的一种,大括号{ }中的代码是由多个case子句组成的,每个case关键字后面都有相应的语句块,这些语句块都是switch语句可能执行的语句块。如果符合常量值,则case下的语句块就会被执行,语句块执行完毕后,执行break语句,使程序跳出switch语句;如果条件都不满足,则执行default中的语句块。
(1)case后的各常量值不可以相同,否则会出现错误。
(2)case后面的语句块可以多条语句,不必使用大括号{}括起来。
(3)case语句和default语句的顺序可以改变,但不会影响程序执行结果。
(4)一个switch语句中只能有一个default语句,而且default语句可以省略。
switch语句的执行流程图如图5.15所示。
图5.15 switch语句的执行过程
【例5.05】 使用switch多分支语句实现查询高考录取分数线的功能,其中,民办本科:350分,艺术类本科:290分,体育类本科:280分,二本:445分,一本:555分。代码如下: (实例位置:资源包\源码\05\5.05)
程序运行效果如图5.16所示。
图5.16 查询高考录取分数线
(1)使用switch语句时,常量表达式的值绝不可以是浮点类型。例如下面的代码就是不合法的:
在Visual Studio 2017开发环境中运行上面代码时,将会出现如图5.17所示的错误提示。
图5.17 判断参数为浮点类型时出现的错误提示
(2)使用switch语句时,每一个case语句或者default后面必须有一个break关键字,否则,将会出现如图5.18所示的错误提示。
图5.18 缺少break关键字时的错误提示
5.2.3节中讲到的if…else if…else语句也可以实现多分支选择的情况,但它主要是对布尔表达式、关系表达式或者逻辑表达式进行判断,而switch多分支语句主要对常量值进行判断。因此,在程序开发中,如果遇到多分支选择的情况,并且判断的条件不是关系表达式、逻辑表达式或者浮点类型,就可以将使用switch语句代替if…else if…else语句,这样执行效率会更高。