3.1 选择语句的应用
选择语句也叫作分支语句,选择语句根据某个条件是否成立来控制程序的执行流程。选择语句包括if语句和switch语句,除此之外,也可把第2章中提到的三元运算符作为分支技术的一种。下面就详细介绍这三种分支技术。
3.1.1 简单的if条件语句
C#中的if语句比较简单,其语法格式如下:
if(条件表达式) { 【代码块】 }
if语句的执行过程如图3-1所示。
图3-1 if语句的执行过程
如果条件表达式的值为true,执行代码块,否则跳过if语句继续向下执行其他程序代码。
3.1.2 if…else…条件语句
if…else…语法格式如下:
if(条件表达式) { 【代码块a】 } else { 【代码块b】 }
if…else…语句的执行过程如图3-2所示。
图3-2 if…else…语句的执行过程
如果条件表达式的值为true,那么执行代码块a中的代码,否则执行代码块b中的代码。
3.1.3 if…else if…else多分支语句
if…else if…else多分支语句的语法格式如下:
if(条件表达式1) { 【代码块a】 } else if(条件表达式2) { 【代码块b】 } else if(条件表达式3) { 【代码块c】 } else { 【代码块d】 }
if…else if…else多分支语句的执行过程如图3-3所示。
图3-3 if…else if…else多分支语句的执行过程
如果条件表达式1的值为true,那么执行代码块a中的代码,否则判断条件表达式2的值是否为true,如果为true,则执行代码块b中的代码,否则继续判断条件表达式3的值是否为true,如果为true,则执行代码块c中的代码,否则执行代码块d中的代码。
3.1.4 嵌套if语句
嵌套if语句的语法格式如下:
if(条件表达式1) { if(条件表达式2) { 【代码块a】 } else { 【代码块b】 } } else { if(条件表达式3) { 【代码块c】 } else { 【代码块d】 } }
嵌套if语句的执行过程如图3-4所示。
图3-4 嵌套if语句的执行过程
如果条件表达式1的值为true,接着判断条件表达式2的值,如果为true,就执行代码块a中的代码,否则执行代码块b中的代码。如果条件表达式1的值为false,接着判断条件表达式3的值是否为true,如果为true,则执行代码块c中的代码,否则执行代码块d中的代码。
3.1.5 switch多分支语句
switch语句与if语句非常类似,是通过将控制传递给其内部的一个case语句来处理多个选择的流程控制语句。C#中要求每个case和default语句中都必须有break语句,除非两个case中间没有其他语句,那么前一个case可以不包含break。此外,判断的表达式或变量可以是int、char或string等类型。
switch语句的基本格式如下:
switch(条件表达式) { case 常量值1: 代码块1; break; case 常量值2: 代码块2; break; … case 常量值N: 代码块N; break; default: 缺省代码块; break; }
switch关键字后面的括号中是条件表达式,大括号中的代码是由若干个case子句所组成。条件表达式的值与每个常量值进行比较,如果有一个匹配,就执行为该匹配提供的代码块语句。如果没有匹配,就执行default部分中的代码。不论是否执行default最后都会执行break语句,使程序跳出switch语句。switch语句可以包含任意数目的case子句,但是任何两个case语句都不能具有相同的值。一个switch语句中只能有一个default标签。
一个case语句处理完成后,不能再进入下一个case语句了,但有一种情况例外,代码如下。
switch(条件表达式) { case 常量值1: case 常量值2: 代码块; break; … case 常量值N: 代码块N; break; default: 缺省代码块; break; }
把若干个case子句放在一起,在其后加一个代码块,实际上是一次检查多个条件,如果满足其中一个条件,就会执行代码块中的代码以及break语句。
3.1.6 三元运算符
三元运算符有三个操作数,其语法格式如下:
<test>?<resultIfTrue>:<resultIfFalse>
其中,第一个操作数<test>可得到一个bool值,如果这个值为true,则结果为<resultIfTrue>,否则为<resultIfFalse>。
例如:
String resultStr=(age>=18)?"你已经成年!":"你尚未成年!";
此例判断int类型的变量age是否大于等于18,如果是,则resultStr值为“你已经成年!”,否则为“你尚未成年!”。