原文: 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 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
循环的主体。 在此,以迭代 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 = 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 时,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);
只要我们需要程序运行,无限循环就很有用。
例如,如果您的程序是动画,则需要不断运行它,直到停止为止。 在这种情况下,无限循环是必要的,以使动画不断重复运行。