2.4 流程控制语句
在程序中,经常需要转移或改变程序的执行顺序,为了实现这一目的,需要使用流程控制语句。C#语言中提供了下面几种语句用于流程控制。
条件语句:if...else,switch...case;
循环语句:while,do,for,foreach;
跳转语句:break,continue。
2.4.1 条件语句
条件语句用于根据条件判断选择所要执行的一组语句。条件语句也称为选择语句,C#中提供了if...else和switch...case语句执行条件分支的选择。
1. if语句
if语句是最常用的条件语句,它根据一个布尔表达式的结果选择执行两个不同的代码块。
C#中if语句的语法格式如下:
或者:
注意
在C#中,表达式的计算结果必须是布尔型。C#编译器能识别出这一类的错误。
示例1:
示例2:
如果程序中逻辑判断比较复杂,可以使用条件判断嵌套语句。格式如下:
if (条件表达式) { if(条件表达式) { 语句块; } else { 语句块; } ……; } else { if(条件表达式) { 语句块; } else { 语句块; } ……; }
注意 在嵌套的if语句中,else子句属于最后一个没有对应的else的if。
例如:
如果希望使语句2和条件if(i>5)关联,则可使用大括号,如下所示:
2. switch...case语句
if语句每个判断只能实现两条分支,若要实现多个选择分支的功能,可以使用switch语句。
switch语句可以用来代替多重if语句。switch语句根据控制表达式的值选择一个分支语句并执行,格式如下:
注意
switch 语句可以有任意多个case实例,但是任何两个case语句都不能具有相同的值。且在C#中必须为每一个case块指定一个跳转语句(如break语句或goto语句),否则会出现编译器错误。
2.4.2 循环语句
循环语句可以重复运行一个或多个语句,从而实现了程序的简化。C#中提供了以下4种循环语句:
◆ while循环
◆ do循环
◆ for循环
◆ foreach循环
1. while循环
while循环根据条件,将一个语句或语句块重复执行零遍或若干遍。while循环的格式如下:
while (条件) { 语句(或语句块); }
while循环的执行过程为:
1 判断条件是否为真;
2 当条件为真时,执行一遍语句或语句块,然后转到第一步;
3 当条件为假时,while循环结束。
示例:以下while循环用于向控制台写入从1到10的累加和。
注意
while循环中的变量i用于控制循环的次数,所有while循环都应该在某个时候终止。
while循环中可以使用continue语句跳过当前循环并开始下一个循环,也可以使用break语句来结束循环。
示例:以下while循环中使用break语句来实现从1到10的累加和的计算。
示例:以下while循环中使用continue语句来实现计算1到100中奇数的和。
2. do循环
do...while循环与while循环类似,不同之处在于,do...while循环即使条件为假时也会执行一次循环体中的语句,即do...while循环根据条件,将一个语句或语句块重复执行一遍或若干遍。C#中do...while循环的格式如下:
do { 语句(或语句块); }while(条件)
3. for循环
for循环要求对特定的条件进行判断后才可以执行循环,并将语句或语句块重复执行预定的次数。因此在已知循环次数的情况下,使用for循环比较方便。for循环的格式如下:
for(初始化;条件;改变控制变量) { 语句(或语句块); }
for循环的执行过程如下:
1 执行一遍初始化,为循环控制变量赋初始值;
2 判断条件是否为真;
3 如果条件为真,则执行循环中的语句或语句块,然后改变循环控制变量的值,回到第二步;
4 如果条件为假,for循环终止。
注意
for语句的初始化、条件和改变控制变量这三个部分必须使用分号分隔。初始化只在循环开始时发生一次。条件的判断发生在循环执行之前,因此 for 语句执行零遍或若干遍。
for语句中的三个部分都是可选的。如果省略条件部分,则条件默认为真,这时for循环中的语句或语句块将永远运行。例如:
可根据需要在for语句中给出多个初始化语句和多个改变控制变量的语句,此时需要使用逗号来分隔不同的初始化语句和改变控制变量的语句。例如:
4. foreach循环
foreach循环是C#中新引入的语句,一般用于遍历整个数组或集合,但不会改变数组或集合中的内容。foreach循环的格式如下:
foreach(类型 元素(变量名称)in 数组或集合) { 语句(或语句块); }
循环体为数组或集合中的每个元素执行一次。
示例:以下foreach循环实现向控制台写入数组中的内容的功能。
2.4.3 跳转语句
使用跳转语句将导致立即传递程序控制。在C#语言中跳转语句使用下列关键字:
◆ break
◆ continue
◆ goto
◆ return
◆ throw
前面已经介绍过break和continue语句,这一节主要介绍goto,return和throw语句。
1. goto语句
goto语句能将程序控制直接传递给标记语句。goto语句可以用于以下两个方面:
◆ 将控制传递给特定的switch...case标签或switch语句中的默认标签;
◆ 跳出深嵌套循环。
示例:使用goto语句将控制传递给特定的switch...case标签。
一定要认真观察下面的代码哦……
下面的代码演示了使用goto跳出嵌套循环的过程。
2. return语句
return语句终止它出现在其中的方法的执行并将控制返回给调用方法。它还可以返回一个可选值,如果方法为void类型,则可以省略return语句。
示例:在计算圆周长的方法CalZc()中以double的形式返回变量zc。
3. throw语句
throw语句用于发出在程序执行期间出现反常情况(异常)的信号,通常与try...catch或try...finally语句一起使用。当引发异常时,程序查找处理此异常的catch语句,也可以用throw语句重新引发已捕获的异常。有关throw语句的详细讲述参见第7章。