C# for 循环

在编程中,经常需要执行某个语句块特定的次数。一种可能的解决方法是按所需的次数键入这些语句。但是,重复的次数可能无法在编译时预知,或者可能非常大(例如 10000 次)。

解决此类问题的最佳方法是使用循环。循环用于在编程中重复执行某些语句块,直到满足某个条件为止。

在本文中,我们将介绍 C# 中的 for 循环。


C# for 循环

在 C# 中,我们使用 for 关键字来创建 for 循环。for 循环 的语法是:

for (initialization; condition; iterator)
{
	// body of for loop
}

for 循环如何工作?

  1. C# for 循环包含三个语句:初始化条件迭代
  2. 初始化语句首先执行,并且只执行一次。通常在这里声明和初始化变量。
  3. 然后,对条件进行求值。条件是一个布尔表达式,即它返回truefalse
  4. 如果条件的求值结果为true
    1. 则执行 for 循环内的语句。
    2. 然后,执行迭代语句,该语句通常会更改已初始化变量的值。
    3. 再次对条件进行求值。
    4. 此过程一直持续到条件的求值结果为false为止。
  5. 如果条件的求值结果为false,则 for 循环终止。

for 循环流程图

C# for loop flowchart
C# for 循环的工作原理

示例 1:C# for 循环

using System;

namespace Loop
{
	class ForLoop
	{
		public static void Main(string[] args)
		{
			for (int i=1; i<=5; i++)
			{
				Console.WriteLine("C# For Loop: Iteration {0}", i);
			}
		}
	}	
}

当我们运行程序时,输出将是:

C# For Loop: Iteration 1
C# For Loop: Iteration 2
C# For Loop: Iteration 3
C# For Loop: Iteration 4
C# For Loop: Iteration 5

在这个程序中,

  • 初始化语句是 int i=1
  • 条件语句是 i<=5
  • 迭代语句是 i++

当程序运行时:

  • 首先,变量 i 被声明并初始化为 1。
  • 然后,对条件(i<=5)进行求值。
  • 由于条件返回true,程序随后执行 for 循环的主体。它会打印给定的行,并附带 Iteration 1(Iteration 仅表示重复)。
  • 现在,对迭代器(i++)进行求值。这会将 i 的值递增到 2。
  • 再次对条件(i<=5)进行求值,并在每次迭代结束时,将 i 的值增加 1。对于前 5 次,条件将求值为true
  • i 的值为 6 且条件为false时,循环将终止。

示例 2:使用 for 循环计算前 n 个自然数的和

using System;

namespace Loop
{
	class ForLoop
	{
		public static void Main(string[] args)
		{
			int n = 5,sum = 0;

			for (int i=1; i<=n; i++)
			{
				// sum = sum + i;
				sum += i;
			}

			Console.WriteLine("Sum of first {0} natural numbers = {1}", n, sum);
		}
	}
}

当我们运行程序时,输出将是:

Sum of first 5 natural numbers = 15

在此,sumn 的值分别初始化为 0 和 5。迭代变量 i 初始化为 1,并在每次迭代时递增。

在 for 循环内,sum 的值会增加 i,即 sum = sum + i。for 循环会一直持续到 i 小于或等于 n(用户输入)为止。

让我们看看在给定程序中每次迭代会发生什么。

最初,i = 1,sum = 0,n = 3

for 循环执行步骤
迭代 i 的值 i<=5 sum 的值
1 1 true 0+1 = 1
2 2 true 1+2 = 3
3 3 true 3+3 = 6
4 4 true 6+4 = 10
5 5 true 10+5 = 15
6 6 false 循环终止

因此,当 n = 5 时,sum 的最终值为 15。


for 循环中的多个表达式

我们也可以在 for 循环中使用多个表达式。这意味着我们可以在 for 循环中使用多个初始化和/或迭代语句。让我们看下面的示例。

示例 3:具有多个初始化和迭代表达式的 for 循环

using System;

namespace Loop
{
	class ForLoop
	{
		public static void Main(string[] args)
		{
			for (int i=0, j=0; i+j<=5; i++, j++)
			{
				Console.WriteLine("i = {0} and j = {1}", i,j);
			}         
		}
	}
}

当我们运行程序时,输出将是:

i = 0 and j = 0
i = 1 and j = 1
i = 2 and j = 2

在此程序中,我们在初始化语句中声明并初始化了两个变量:ij

此外,我们在迭代部分有两个表达式。这意味着在每次迭代中,ij 都会增加 1。


不带初始化和迭代语句的 for 循环

初始化、条件和迭代语句在 for 循环中是可选的。这意味着我们也可以在没有这些语句的情况下运行 for 循环。

在这种情况下,for 循环的行为类似于 while 循环。让我们看下面的示例。

示例 4:不带初始化和迭代语句的 for 循环

using System;

namespace Loop
{
	class ForLoop
	{
		public static void Main(string[] args)
		{
			int i = 1;
			for ( ; i<=5; )
			{
				Console.WriteLine("C# For Loop: Iteration {0}", i);
				i++;
			}
		}
	}
}

当我们运行程序时,输出将是:

C# For Loop: Iteration 1
C# For Loop: Iteration 2
C# For Loop: Iteration 3
C# For Loop: Iteration 4
C# For Loop: Iteration 5

在此示例中,我们没有使用初始化和迭代语句。

变量 i 在 for 循环上方初始化,并在循环体内递增。此程序与示例 1 中的程序相同。

类似地,条件也是一个可选语句。但是,如果我们不使用测试表达式,for 循环将不会测试任何条件,并且会永远运行(无限循环)。


无限 for 循环

如果 for 循环中的条件始终为 true,则 for 循环将永远运行。这称为无限 for 循环。

示例 5:无限 for 循环

using System;

namespace Loop
{
	class ForLoop
	{
		public static void Main(string[] args)
		{
			for (int i=1 ; i>0; i++)
			{
				Console.WriteLine("C# For Loop: Iteration {0}", i);
			}
		}
	}
}

这里,i 被初始化为 1,条件是 i>0。在每次迭代中,我们都将 i 的值增加 1,因此条件永远不会为false。这将导致循环无限执行。

我们还可以通过将条件替换为空来创建无限循环。例如:

for ( ; ; )
{
	// body of for loop
}

或者

for (initialization ; ; iterator)
{
	// body of for loop
}
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战