C#中不同循环结构比较
2015-05-30梁宇琪王冰苗娟
梁宇琪 王冰 苗娟
循环结构是程序设计中一种很重要的结构,其特点是:在给定条件成立的情况下,反复执行某段程序,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。C#语言提供了多种循环语句,包括for语句、while语句、do-while语句、foreach语句、break语句、continue语句等;此文仅对for语句、while语句、do-while语句、foreach语句进行比较,使学习者明确它们之间的区别,以便使用循环结构时进行选用。
一、for循环
for循环语句是c#中使用最广泛,最灵活的一种循环语句。它不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况。
首先我们来介绍一下for语句的基本格式与语法:
for(①初始化表达式;②循环条件表达式;④变量控制表达式)
{
③循环体
}
执行过程如下:①初始化表达式:一般为赋值表达式,为循环控制变量赋初值。只在第一次循环开始时执行;②循环条件表达式:一般为逻辑表达式,是用来控制循环是否继续的条件。当表达式的值为“真”时,循环继续执行转向步骤③;当表达式的值为“假”时,跳过循环体③,循环结束;③循环体:反复执行的代码段;④变量控制表达式:一般为赋值表达式,为循环控制变量增量或减量。执行完后,转向步骤②,循环继续执行。
使用for循环时需要注意几点:
①在循环结构中,一定要有使循环趋向结束的操作。以上程序代码中,语句i++;使i不断增1,当i>5时,循环结束。如果没有i++;这一语句,i的值始终不变,循环将无限进行,即为死循环。
②for后面括号内的3个表达式之间用两个“;”隔开,3个表达式的内容可以为空,但”;”不能省略。
③for后面括号后没有“;”,紧接“{}”,如在for后的“()”后紧接“;”,则表示循环体为空。
④当循环体只有一个子句时“{}”可以省略。
二、while循环
While语句的作用是判断一个条件表达式,以便决定是否应当进入和执行循环体,当满足该条件时进入循环,不满足该天剑时则不再执行循环。
基本格式与语法:
while(①条件表达式)
{
②循环体
}
执行过程如下:①条件表达式:一般为逻辑表达式,是用来控制循环是否继续的条件。当表达式的值为“真”时,循环继续执行转向②;当表达式的值为“假”时,跳过循环体②,while循环结束;②循环体:反复执行的代码段。执行完后,转向步骤①,循环继续执行。
使用while循环时需要注意几点:
①在循环体中,一定要有使循环趋向结束的语句。以上程序代码中,语句i++;使i不断增1,当i>5时,循环结束。如果没有i++;这一语句,i的值始终不变,循环将无限进行,即为死循环。
②如果循环体只包含一个语句,可以省略{}。
三、do..while循环
基本格式与语法:
do
{
①循环体
}while(②条件表达式);
执行过程如下:①循环体:反复执行的代码段。当流程到达do后,立即执行循环体,循环体至少执行一次。完后转向while后的条件表达式②;②条件表达式:一般为逻辑表达式,是用来控制循环是否继续的条件。当表达式的值为“真”时,循环继续执行转向①;当表达式的值为“假”时,循环结束。
使用do...while循环时需要注意几点:
①在循环体中,一定要有使循环趋向结束的语句。以上程序代码中,语句i++;使i不断增1,当i>5时,循环结束。如果没有i++;这一语句,i的值始终不变,循环将无限进行,即为死循环。
②和while语句的相同点是:都是在while后表示循环条件;循环体都在{}中。和while语句的区别是:语法结构上do..while结构do开始,“;”结束;do..while结构不管一开始循环条件是否满足都先执行了循环体,循环体至少执行一次。
四、foreach语句
foreach循环语句可以遍历集合中的元素。foreach语句的语法格式如下:
foreach(类型变量in表达式)
{
循环体
}
其中:
类型:变量的类型
变量:能被集合元素赋值的循环变量,是一个只读的局部变量。
表达式:对象集合或数组表达式。集合元素的类型必须可以显式转换为变量类型。
执行过程如下:①变量在表达式中遍历时,循环体反复执行。
五、综合对比
经过对四种循环结构的介绍我们发现:①foreach循环语句通过遍历集合中的元素进行循环,其他三种都是通过循环变量控制循环;②在这三种循环结构中只有for循环明确的给出了循环变量定义及循环变量控制语句,因此使用更为灵活,还有更好的可读性;③do...while和while语句的相同点是:都是在while后表示循环条件;循环体都在{}中。和while语句的区别是:语法结构上do..while结构do开始,“;”结束;do..while结构不管一开始循环条件是否满足都先执行了循环体,循环体至少执行一次。
至此,以上四种循环结构我们就可以根据需要灵活选用了,但有时我们希望在循环条件成立的情况下提前跳出循环,这就需要用到break语句了;continue作用为结束本次循环,即跳过循环体中尚未执行的语句,继续该循环的下一轮。