在编程中,经常需要执行某个语句块若干次。一个可能的解决方案是直接将这些语句写出所需的次数。然而,重复的次数可能在编译时无法预知,或者可能非常大(例如 10000 次)。
解决此类问题的最佳方案是循环。循环在编程中用于重复执行某个语句块,直到满足某个条件为止。
在本文中,我们将学习如何在 C# 中使用 while 循环。
C# while 循环
while 关键字用于在 C# 中创建 while 循环。while 循环的语法如下:
while (test-expression) { // body of while }
while 循环如何工作?
- C# while 循环包含一个 `test-expression`(测试表达式)。
- 如果 `test-expression` 的求值结果为 `true`,
- 则执行 while 循环内的语句。
- 执行后,再次对 `test-expression` 进行求值。
- 如果 `test-expression` 的求值结果为 `false`,则 while 循环终止。
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
迭代 | 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 循环
do 和 while 关键字用于创建 do...while 循环。它与 while 循环相似,但它们之间有一个主要的区别。
在 while 循环中,在执行主体之前会检查条件。do...while 循环的情况则完全相反,即在执行主体之后才检查条件。
因此,do...while 循环的主体将至少执行一次,而不管测试表达式如何。
do...while 循环的语法如下:
do { // body of do while loop } while (test-expression);
do...while 循环如何工作?
- 首先执行 do...while 循环的主体。
- 然后对 `test-expression` 进行求值。
- 如果 `test-expression` 为 `true`,则执行循环的主体。
- 当 `test-expression` 为 `false` 时,do...while 循环终止。
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);
当我们需要循环运行直到程序停止时,无限循环就很有用了。
例如,如果您的程序是动画,您将需要持续运行它,直到停止为止。在这种情况下,无限循环对于重复运行动画是必不可少的。