原文: https://www.programiz.com/csharp-programming/do-while-loop

在本文中,我们将学习 C# 中的whiledo...while循环,如何使用它们以及它们之间的区别。

在编程中,通常需要执行特定次数的语句块。 一种可能的解决方案是键入所需次数的语句。 但是,重复的次数可能事先未知(在编译时),或者可能不够大(例如 10000)。

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

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


C# while循环

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

  1. while (test-expression)
  2. {
  3. // body of while
  4. }

while循环如何工作?

  1. C# while循环由test-expression组成。
  2. 如果将test-expression求值为true

    1. while循环内的语句被执行。
    2. 执行后,再次求值test-expression
  3. 如果将test-expression求值为false,则while循环终止。

while循环流程图

C# `while`和`do...while`循环 - 图1

示例 1:while循环

  1. using System;
  2. namespace Loop
  3. {
  4. class WhileLoop
  5. {
  6. public static void Main(string[] args)
  7. {
  8. int i=1;
  9. while (i<=5)
  10. {
  11. Console.WriteLine("C# For Loop: Iteration {0}", i);
  12. i++;
  13. }
  14. }
  15. }
  16. }

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

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

最初i的值为 1。

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

  • 测试表达式i <= 5被求值。 由于i为 1 而1 <= 5true,因此它执行while循环的主体。 在此,以迭代 1 将行打印在屏幕上,i的值增加 1 变为 2。
  • 现在,再次求值测试表达式(i <= 5)。 同样,这次表达式也返回true2 <= 5),因此该行将打印在屏幕上,并且i的值现在增加到 3。
  • 这样下去,while循环将执行到i变为 6。此时,test-expression的计算结果为false,因此循环终止。

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

  1. using System;
  2. namespace Loop
  3. {
  4. class WhileLoop
  5. {
  6. public static void Main(string[] args)
  7. {
  8. int i=1, sum=0;
  9. while (i<=5)
  10. {
  11. sum += i;
  12. i++;
  13. }
  14. Console.WriteLine("Sum = {0}", sum);
  15. }
  16. }
  17. }

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

  1. Sum = 15

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

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

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

最初,i = 1sum = 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循环的主体将至少执行一次,而与test-expression无关。

do...while循环的语法为:

  1. do
  2. {
  3. // body of do while loop
  4. } while (test-expression);

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

  1. 首先执行do...while循环的主体。
  2. 然后求值test-expression
  3. 如果test-expressiontrue,则执行循环主体。
  4. test-expressionfalse时,do...while循环终止。

do...while循环流程图

C# `while`和`do...while`循环 - 图2

示例 3:do...while循环

  1. using System;
  2. namespace Loop
  3. {
  4. class DoWhileLoop
  5. {
  6. public static void Main(string[] args)
  7. {
  8. int i = 1, n = 5, product;
  9. do
  10. {
  11. product = n * i;
  12. Console.WriteLine("{0} * {1} = {2}", n, i, product);
  13. i++;
  14. } while (i <= 10);
  15. }
  16. }
  17. }

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

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

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

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

无限whiledo...while循环

如果whiledo...while循环中的测试表达式从不求值为false,则循环主体将永远运行。 这样的循环称为无限循环。

例如:

无限while循环

  1. while (true)
  2. {
  3. // body of while loop
  4. }

无限do... while循环

  1. do
  2. {
  3. // body of while loop
  4. } while (true);

只要我们需要程序运行,无限循环就很有用。

例如,如果您的程序是动画,则需要不断运行它,直到停止为止。 在这种情况下,无限循环是必要的,以使动画不断重复运行。