C# 中的“带分号的空行”是什么意思?

won*_*nea 3 c# syntax

我偶然发现了这段代码,并想知道为什么 C# 编译器不引发警告或错误。严格来说,我想我试图执行实际上有效的任何事情?(对于空行)

空行上的分号

usr*_*usr 5

这是一个空语句。它作为循环体很有用:

while(!Condition()) ;
Run Code Online (Sandbox Code Playgroud)

在循环体完全嵌入循环头中的 for 循环中更常见。

让我们遍历链表的最后一个元素:

Node current = head;
for (; current.Next != null; current = current.Next) ;
return current;
Run Code Online (Sandbox Code Playgroud)

它看起来有点讨厌,通常我更喜欢编写更长但更易读的循环。C++ 人倾向于把很多东西塞进循环头中。

我相信它在代码生成场景中也能派上用场。