“do while (...) {...} while (...)”是什么意思?

问题描述 投票:0回答:1

我不小心将

while
循环与
do while
循环组合起来创建了这个令人困惑的结构:

do while (false)
{
    Console.WriteLine(1);
}
while (true);

这不会引发任何错误,但也不会向控制台写入任何内容。事实上,它似乎没有做任何事情。

将其与常规

do while
进行比较,它会无限期地将
1
打印到控制台:

do
{
    Console.WriteLine(1);
}
while (true);

为什么第一个构造不会抛出错误?它在做什么?

c# loops while-loop do-while
1个回答
0
投票

我将稍微重新组织一下你的样本。希望这能让发生的事情变得更清楚。

do
    while (false)
    {
        Console.WriteLine(1);
    }
while (true);

你现在看到了吗?归结为:缺少代码块 (

{}
),
do
语句之后的第一个语句将被解释为循环体。

在您的示例中,第一个语句是您意外声明的

while (false)
循环。由于内部循环现在是外部循环的主体,因此它会被重复
while (true)
- 也就是说,永远。

当然,由于

false
永远不会
true
,因此
Console.WriteLine(1);
行永远不会被执行。所以你的程序将无限循环,但它永远不会在控制台上打印任何内容。

© www.soinside.com 2019 - 2024. All rights reserved.