首页 > 编程笔记

C# for循环的用法(非常详细)

for 循环是 C# 中最常用、最灵活的一种循环结构,for 循环既能够用于循环次数已知的情况,又能够用于循环次数未知的情况。

本文将对 C# for 循环的使用进行详细讲解。

C# for 循环的一般形式

C# for 循环的常用语法格式如下:
for(表达式1;表达式2;表达式3)
{
    语句
}
for 循环的执行过程如下:
  1. 求解表达式1。
  2. 求解表达式2,若表达式2的值为 True,则执行循环体内的语句组,然后执行第3步;若值为 False,转到第5步。
  3. 求解表达式3。
  4. 转回到第2步。
  5. 循环结束,执行 for 循环后面的语句。

for 循环的流程图如图3所示。

C# for 循环的流程图
图3:C# for 循环的流程图

C# for 循环最常用的格式如下:
for(循环变量赋初值;循环条件;循环变量增值)
{
    语句组
}
使用 for 循环编写程序实现 1 到 100 的累加,代码如下:
static void Main(string[] args)
{
     int iSum = 0;             //记录每次累加后的结果
     for (int iNum = 1; iNum <= 100; iNum++)
     {
          iSum += iNum;       //把每次的iNum值累加到上次累加的结果中
     }
     Console.WriteLine("1到100的累加结果是" + iSum); //输出结果
     Console.ReadLine();
}

代码注解

在上面的代码中,iNum 是循环变量,iNum 的初始值为 1,循环条件是 iNum<=100,每次循环结束都会对 iNum 进行累加。

多学两招

可以把 for 循环改成 while 循环,语法格式如下:
表达式1;
while(表达式2)
{
     语句组
     表达式3;
}

C# for 循环的变体

for 循环在具体使用时,有很多种变体形式,例如,可以省略“表达式1”,或省略“表达式2”,或省略“表达式3”,或者3个表达式都省略。下面分别对 for 的常用变体形式进行讲解。

1) 省略“表达式1”的情况

for 循环语句的一般格式中的“表达式1”可以省略。

在 for 循环中,“表达式1”一般用于为循环变量赋初值,若省略了“表达式1”,则需要在 for 循环的前面为循环条件赋初值,代码如下:
for(;iNum <= 100; iNum++)
{
    sum += iNum;
}
此时,需要在 for 循环之前为 iNum 这个循环变量赋初值。程序执行时,会跳过“表达式1”这一步,其他过程不变。

【常见错误】把上面的 for 循环语句改成 for( iNum <= 100; iNum ++) 后进行编译,会出现图4所示的错误提示。

使用 for 循环语句时缺少分号的错误提示
图4:使用 for 循环语句时缺少分号的错误提示

出错是因为虽然可以省略“表达式1”,但是其后面的分号不能省略。

2) 省略“表达式2”的情况

在使用 for 循环时,“表达式2”也可以省略。

如果省略了“表达式2”,则循环没有终止条件,会无限地循环下去。针对这种使用方法,一般会配合 break 语句等来结束循环。

省略“表达式2”情况的举例:
for(iNum = 1;;iNum++)
{
    iSum += iNum;
}
这种情况的 for 循环相当于以下 while 语句。
while(true) //条件永远为真
{
    iSum += iNum;
    iNum ++;
}

3) 省略“表达式3”的情况

在使用 for 循环时,“表达式3”也可以省略,但此时程序设计者应另外设法保证循环变量的改变。

例如,下面的代码在循环体中对循环变量的值进行了改变。
for(iNum = 1; iNum<=100;)
{
    iSum += iNum;
    iNum ++;
}
此时,在 for 循环的循环体内,对 iNum 这个循环变量的值进行了改变,这样才能使程序随着循环的进行逐渐趋近并满足程序终止条件。程序在执行时,会跳过“表达式3”这一步,其他过程不变。

4) 3个表达式都省略的情况

C# for 循环语句中的 3 个表达式都可以省略,这种情况既没有对循环变量赋初值的操作,又没有循环条件,也没有改变循环变量的操作。这种情况下,同省略“表达式2”的情况类似,都需要配合使用 break 语句来结束循环,否则会造成死循环。

例如,下面的代码就会成为死循环,因为没有能够跳出循环的条件判断语句。
int i = 100;
for(;;)
{
       Console.WriteLine(i);
}

for 循环中逗号的应用

在 C# for 循环语句中,“表达式1”和“表达式3”部分都可以使用逗号分隔表达式,即包含一个以上的表达式时,中间用逗号间隔。

例如,在“表达式1”部分为变量iNum和iSum同时赋初值。
for(iSum = 0, iNum = 1; iNum <= 100; iNum++)
{
    iSum += iNum;
}

推荐阅读