2.9 循环语句
在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件。循环语句是由循环体及循环的终止条件两部分组成的。循环能够减少代码量,避免重复输入相同的代码行,也能够提高应用程序的可读性。常见的循环语句有for、while、do、for each。
2.9.1 for循环
for循环一般用于已知重复执行次数的循环,是程序开发中常用的循环条件之一,当for循环表达式中的条件为true时,就会一直循环代码块。因为循环的次数是在执行循环语句之前计算的,所以for循环又称作预测式循环。当表达式中的条件为false时,for循环会结束循环并跳出。for循环语法格式如下:
for循环的优点就是for循环的条件都位于同一位置。同样,循环的条件可以使用复杂的布尔表达式表示。for循环表达式包含3个部分,即初始化表达式、条件表达式和迭代表达式。当for循环执行时,将按照以下顺序执行。
■在for循环开始时,首先运行初始化表达式。
■初始化表达式初始化后,则判断表达式条件。
■若表达式条件成立,则执行循环语句。
■循环语句执行完毕后,迭代表达式执行。
■迭代表达式执行完毕后,再判断表达式条件并循环。
下列代码是输出0~99的值。
注意:for循环既可做增量操作,也可以做减量操作,如可以写为for(int i=10;i>0;i--),说明for循环的结构非常灵活,同样for循环的条件,迭代表达式也不仅局限于此。
2.9.2 while循环
while语句同for语句一样都可以执行循环,但是while的使用更加灵活,可以在代码块执行前判断条件,也可以在代码块执行一次后再行判断条件。while语句的使用方法基本上和if语句相同,其区别就在于,if语句一般需要先知道循环次数,而while语句即便不知道循环次数也可以使用。while语句基本语法如下:
while语句包括两个部分,布尔值和执行语句,while语句执行步骤一般如下所示。
■判断布尔值。
■若布尔值为true则执行语句,否则跳过。
下列代码是将一个数值每次减1,直到这个数值等于1为止。
在while语句中,可以使用continue语句来执行下一次迭代而不执行完所有的执行语句,当执行到continue关键字时则跳出并继续执行while循环而不执行continue关键字后的语句。也可以使用break关键字在某个条件下跳出并终止循环,继续执行循环后的语句,示例代码如下:
2.9.3 do while循环
do while循环和while循环十分相似,区别在于do while循环会执行一次执行语句,然后再判断while中的条件。这种循环成为后测试循环,当程序需要执行一次语句再循环的时候,do while语句是非常实用的。do while语句语法格式如下:
do while语句包含两个部分,执行语句和布尔值。与while循环语句不同的是,执行步骤首先执行一次执行语句,具体步骤如下所示。
■执行一次执行语句;
■判断布尔值;
■若布尔值为true,则继续执行,否则跳出循环。
do while语句示例代码如下:
2.9.4 for each循环
for循环语句常用的另一种用法就是对数组进行操作,C#还提供了for each循环语句,如果想重复集合或者数组中的所有条目,使用for each是很好的解决方案。for each语句语法格式如下:
for each语句执行顺序如下:
■集合中是否存在元素;
■若存在,则用集合中的第一个元素初始化局部变量;
■执行控制语句;
■集合中是否还有剩余元素,若存在,则将剩余的第一个元素初始化局部变量;
■若不存在,结束循环。
for each语句示例代码如下:
注意:在使用foreach语句的时候,局部变量的数据类型应该与集合或数组的数据类型相同,否则编译器会报错。