在while循环的条件下放置分号后会发生什么?

Dot*_*NET 10 c# syntax loops while-loop

我偶然遇到过这样的情况:

while (true) {

while (age == 5); //What does this semi-colon indicate?
//Code
//Code
//Code

}
Run Code Online (Sandbox Code Playgroud)

while(true)表明这是一个无限循环,但我无法理解while条件完成后的分号是什么,是不是等于这个?:

while (age == 5) { }

//Code
//Code
Run Code Online (Sandbox Code Playgroud)

换句话说,它是否意味着while循环是无用的,因为它永远不会进入块?

小智 22

while (age == 5);     // empty statement
Run Code Online (Sandbox Code Playgroud)

相当于

while (age == 5) { }  // empty block
Run Code Online (Sandbox Code Playgroud)

更新:即使没有要执行的主体,也不意味着循环终止.相反,它将简单地循环遍历条件(可能具有或依赖于副作用),直到满足为止.这是一个等效的形式goto:

loop:
if (age == 5)
  goto loop;
Run Code Online (Sandbox Code Playgroud)

此构造有时用作等待标志的忙循环,以便在线程代码中进行更改.(确切的用法和有效性因语言,算法和执行环境而异.)

我发现使用;了一个"空块"空语句一个有问题的构造要使用,因为这样的问题:

while (age == 5); {
   Console.WriteLine("I hate debugging");
}
Run Code Online (Sandbox Code Playgroud)

(之前我已经多次看到过这个bug,当时添加了新代码.)

快乐的编码.