原文: https://www.programiz.com/csharp-programming/do-while-loop
在本文中,我们将学习 C# 中的while和do...while循环,如何使用它们以及它们之间的区别。
在编程中,通常需要执行特定次数的语句块。 一种可能的解决方案是键入所需次数的语句。 但是,重复的次数可能事先未知(在编译时),或者可能不够大(例如 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 1C# For Loop: Iteration 2C# For Loop: Iteration 3C# For Loop: Iteration 4C# For Loop: Iteration 5
最初i的值为 1。
当程序到达while循环语句时,
- 测试表达式
i <= 5被求值。 由于i为 1 而1 <= 5为true,因此它执行while循环的主体。 在此,以迭代 1 将行打印在屏幕上,i的值增加 1 变为 2。 - 现在,再次求值测试表达式(
i <= 5)。 同样,这次表达式也返回true(2 <= 5),因此该行将打印在屏幕上,并且i的值现在增加到 3。 - 这样下去,
while循环将执行到i变为 6。此时,test-expression的计算结果为false,因此循环终止。
示例 2:计算前 5 个自然数的和的while循环
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循环
do和while关键字用于创建do...while循环。 它类似于while循环,但是它们之间有很大的不同。
在while循环中,在执行主体之前检查条件。 与do...while循环完全相反,即在执行主体之后检查条件。
这就是为什么do...while循环的主体将至少执行一次,而与test-expression无关。
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 = 55 * 2 = 105 * 3 = 155 * 4 = 205 * 5 = 255 * 6 = 305 * 7 = 355 * 8 = 405 * 9 = 455 * 10 = 50
如我们所见,上面的程序打印出一个数字(5)的乘法表。
- 最初,
i的值为 1。程序然后进入do..while循环的主体,而不检查任何条件(与while循环相对)。 - 在体内,将计算
product并将其打印在屏幕上。i的值然后增加到 2。 - 执行完循环的主体后,将求值测试表达式
i <= 10。 总共,do...while循环将运行 10 次。 - 最后,当
i的值为 11 时,test-expression计算为false,因此终止循环。
无限while和do...while循环
如果while和do...while循环中的测试表达式从不求值为false,则循环主体将永远运行。 这样的循环称为无限循环。
例如:
无限while循环
while (true){// body of while loop}
无限do... while循环
do{// body of while loop} while (true);
只要我们需要程序运行,无限循环就很有用。
例如,如果您的程序是动画,则需要不断运行它,直到停止为止。 在这种情况下,无限循环是必要的,以使动画不断重复运行。
