C# while 和 do...while 循环

在编程中,经常需要执行某个语句块若干次。一个可能的解决方案是直接将这些语句写出所需的次数。然而,重复的次数可能在编译时无法预知,或者可能非常大(例如 10000 次)。

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

在本文中,我们将学习如何在 C# 中使用 while 循环。


C# while 循环

while 关键字用于在 C# 中创建 while 循环。while 循环的语法如下:

while (test-expression)
{
	// body of while
}

while 循环如何工作?

  1. C# while 循环包含一个 `test-expression`(测试表达式)。
  2. 如果 `test-expression` 的求值结果为 `true`,
    1. 则执行 while 循环内的语句。
    2. 执行后,再次对 `test-expression` 进行求值。
  3. 如果 `test-expression` 的求值结果为 `false`,则 while 循环终止。

while 循环流程图

C# while loop
C# while 循环的工作原理

示例 1:while 循环

using System;

namespace Loop
{
	class WhileLoop
	{
		public static void Main(string[] args)
		{
			int i=1;
			while (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 的值为 1。

当程序到达 while 循环语句时,

  • 对测试表达式 `i <= 5` 进行求值。由于 i 为 1 且 `1 <= 5` 为 `true`,因此执行 while 循环体。此处,屏幕上会打印出带有 Iteration 1 的行,并且 i 的值增加 1,变为 2。
  • 现在,再次对测试表达式 (`i <= 5`) 进行求值。这次表达式也返回 `true` (2 <= 5),因此会打印该行,并且 i 的值现在增加到 3。
  • 这种情况会一直持续,直到 i 变为 6。此时,测试表达式的求值结果将为 `false`,循环因此终止。

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

using System;

namespace Loop
{
	class WhileLoop
	{
		public static void Main(string[] args)
		{
			int i=1, sum=0;

			while (i<=5)
			{
				sum += i;
				i++;
			}
			Console.WriteLine("Sum = {0}", sum);
		}
	}
}

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

Sum = 15

此程序计算前 5 个自然数的和。

  • 最初,sum 的值初始化为 0。
  • 在每次迭代中,sum 的值更新为 `sum + i`,并且 i 的值增加 1。
  • i 的值达到 6 时,测试表达式 `i <= 5` 将返回 false,循环终止。

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

最初,i = 1,sum = 0

While 循环执行步骤
迭代 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 循环终止

因此,sum 的最终值将是 15。


C# do...while 循环

dowhile 关键字用于创建 do...while 循环。它与 while 循环相似,但它们之间有一个主要的区别。

在 while 循环中,在执行主体之前会检查条件。do...while 循环的情况则完全相反,即在执行主体之后才检查条件。

因此,do...while 循环的主体将至少执行一次,而不管测试表达式如何。

do...while 循环的语法如下:

do
{
	// body of do while loop
} while (test-expression);

do...while 循环如何工作?

  1. 首先执行 do...while 循环的主体。
  2. 然后对 `test-expression` 进行求值。
  3. 如果 `test-expression` 为 `true`,则执行循环的主体。
  4. 当 `test-expression` 为 `false` 时,do...while 循环终止。

do...while 循环流程图

Do while loop in c#
C# do...while 循环的工作原理

示例 3:do...while 循环

using System;

namespace Loop
{
	class DoWhileLoop
	{
		public static void Main(string[] args)
		{
			int i = 1, n = 5, product;

			do
			{
				product = n * i;
				Console.WriteLine("{0} * {1} = {2}", n, i, product);
				i++;
			} while (i <= 10);
		}
	}
}

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

5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
5 * 10 = 50

正如我们所见,上面的程序会打印出某个数字(5)的乘法表。

  • 最初,i 的值为 1。然后,程序进入 do..while 循环的主体,而不检查任何条件(与 while 循环不同)。
  • 在主体内部,计算 product 并将其打印在屏幕上。然后 i 的值增加到 2。
  • 在执行完循环主体后,对测试表达式 `i <= 10` 进行求值。总共,do...while 循环将运行 10 次。
  • 最后,当 i 的值为 11 时,测试表达式的求值结果为 `false`,因此循环终止。

无限 while 和 do...while 循环

如果 while 和 do...while 循环中的测试表达式永远不会对值为 `false`,则循环的主体将永远运行。这种循环称为无限循环。

例如

无限 while 循环

while (true)
{
	// body of while loop
}

无限 do...while 循环

do
{
	// body of while loop
} while (true);

当我们需要循环运行直到程序停止时,无限循环就很有用了。

例如,如果您的程序是动画,您将需要持续运行它,直到停止为止。在这种情况下,无限循环对于重复运行动画是必不可少的。

你觉得这篇文章有帮助吗?

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

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

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