



选择语句用于根据某个表达式的值从若干条给定语句中选择一个来执行。选择语句包括if语句和switch语句两种,下面对这两种选择语句进行详细讲解。
选择语句执行过程就好像在商场买东西时,是拿现金还是刷卡,如果刷卡,是用信用卡,还是普通银行卡,它是对事物的一个选择过程。
英文单词if可以翻译成如果,例如,这里提供一句话,大家可以考虑如何通过if语句来实现,“如果你能坚持不懈的努力,那么就会成功”,这句话如果使用if语句表达就应该是下面的形式:
if( 你能坚持不懈的努力){}
就会成功;
也就是说,如果你选择坚持不懈的去努力,那么就会实现自己的梦想,坚持不懈的努力是成功的先决条件,所以“()”里的内容是前提条件,只有满足了“()”里的内容,才能执行“{}”号里的代码,这便是if语句的基本用法。
在生活中,随处可见if语句的应用实例。例如,当一个人走到岔路口时,摆在面前的有两条路,那么应该如何根据需要选择要走的路呢?这时if语句就派上用场了,如图4.1所示。
图4.1 if语句的演示
C#中if语句的语法格式如下:
如果布尔表达式的值为true,则执行if语句块中的语句;如果布尔表达式的值为false,则跳过if语句而执行其他程序代码或结束程序。if语句执行流程如图4.2所示。
图4.2 if语句执行流程
【例4.1】 通过if语句实现只有年龄大于或等于56岁,才可以申请退休,代码如下:
if语句的另一种形式是if…else语句,在此处多出一个else分支,可以翻译成“否则”。同样,这里通过一个句子来理解if…else语句的用法。例如,如果你是中国人,请举起右手;否则,请举起左手。这个句子如果用if…else语句去表达可以通过以下方式:
C#中if…else语句的语法格式如下:
上面语法格式的具体含义是,当布尔表达式的值为true时,执行语句块1;否则,执行语句块2;if…else语句执行流程如图4.3所示。
图4.3 双分支选择结构的执行流程图
【例4.2】 通过if…else语句实现只有年龄大于或等于56岁,才可以申请退休,否则程序会提示不可以申请退休,代码如下:
if语句和if…else语句在实际开发项目时会被经常用到,例如,当我们登录网上的电子邮箱时,首先需要验证输入的用户名和密码是否正确,这时,就可以利用if…else语句判断输入的用户名和密码与数据库中存储的是否一致,如果一致则进入邮箱,否则会得到密码或用户名错误的提示。
在if…else语句的基础之上,扩展出if…else if…else语句,该语句通过判定多个条件以便决定执行什么操作。例如,如果你是山西人,请举起右手;如果你是山东人,请举起左手;否则,请不要举手。这个逻辑如果用if…else if…else语句去表达可以通过以下方式来描述。
C#中if…else if…else语句的语法格式如下:
上面语法结构的执行过程说明如下:
(1)首先判断表达式1,如果其值为true,则执行“语句块一”,然后结束if语句。
(2)如果表达式1的值为false,则判断表达式2,如果其值为true,则执行“语句块二”,然后结束if语句。
(3)如果表达式2的值为false,再继续往下判断其他表达式的值。
(4)如果所有表达式的值都为false,则执行“语句块 n ”。
多分支if语句的执行流程如图4.4。
图4.4 多分支选择结构的执行流程图
【例4.3】 创建一一个控制台应用程序,利用if…else if…else语句检查输入字符是否是小写字符、大写字符或数字。如果符合某个分支的判断条件,则输出相应的提示信息;否则,程序提示输入的字符是“其他字符”。程序代码如下:
程序的运行结果如图4.5所示。
图4.5 使用if…else if…else语句
if语句之间可以互相嵌套,if语句和if…else语句之间可以互相嵌套使用,if…else语句之间也可以互相嵌套,这也就是所谓的多层嵌套,但是使用起来是非常灵活的。下面对常用的几种if语句嵌套进行讲解。
语法格式如下:
【例4.4】 创建一一个控制台应用程序,定义一一个整型变量,表示人的年龄,并初始化为52;定义一一个字符串变量,表示性别,并初始化为“女”;然后使用嵌套if语句来判断只有年龄大于或等于50岁并且为女性,才可以申请退休,代码如下:
语法格式如下:
学习手册
说明
以上只是if语句和if…else语句嵌套关系中的一种形式,当然也可以在if…else语句中嵌套if语句,它们是可以互相嵌套的,开发人员需要根据实际情况选择如何进行嵌套。
【例4.5】 创建一一个控制台应用程序,其中使用if语句和if…else语句的嵌套来判断用户输入的性别,代码如下:
程序运行结果如图4.6所示。
图4.6 if语句和if…else语句的嵌套使用
在判定多个条件时,如果用if…else if…else语句可能会很复杂和冗长。在这种情况下,应用switch语句就会简明清晰得多。switch语句是多路选择语句,它是根据某个值来使程序从多个分支中选择一个用于执行的,如图4.7所示。
图4.7 switch语句的演示
C#中switch语句的语法格式如下:
switch关键字后面的括号()中是条件表达式,大括号{ }中的程序代码是由数个case子句组成的。每个case关键字后面都有语句块,这些语句块都是switch语句可能执行的语句块。如果符合条件值,则case下的语句块就会被执行,语句块执行完毕后,紧接着会执行break语句,使程序跳出switch语句。在switch语句中,表达式的类型必须是sbyte、byte、short、ushort、int、uint、long、ulong、char、string和枚举类型中的一种。常量表达式的值必须是与表达式的类型兼容的常量,并且在一个switch语句中,不同case关键字后面的常量表达式必须不同,如果指定了相同的常量表达式,则会导致编译时出错。一个switch语句中只能有一个default标签。在switch语句中,在case子句的语句块后经常使用break语句,其主要作用是跳出switch语句。
学习手册
注意
switch语句可以包括任意数目的case实例,但是任何两个case语句都不能具有相同的值。
switch语句的执行流程如图4.8所示。
图4.8 switch语句执行流程
【例4.6】 创建一一个控制台应用程序,如果使用if…else语句判断用户输入的月份所在的季节,是非常烦琐的。而使用switch语句进行判断,相对就变得非常简单明了,代码如下:
程序的运行结果如图4.9所示。
图4.9 根据输入的月份输出相应的季节
【例4.7】 创建一一个控制台应用程序,在Main方法中定义3种付款方式代码(A——现金、B——信用卡、C——普通银行卡),然后程序提示输入其中的一一种付款方式代码,最后使用嵌套if…else语句判断输入的付款方式,并输出相应的提示信息。代码如下:
程序运行结果如图4.10所示。
图4.10 使用嵌套if…else语句判断付款方式