当所有表达式都缺失时,C#for循环会做什么.例如for(;;){}

Pau*_*ulB 8 .net c# syntax for-loop

我只能假设它是一个无限循环.

我可以在for循环中省略三个表达式中的任何一个吗?省略时是否有默认值?

Ale*_*ort 15

是的,这是一个无限循环.

例子:

for (; ;) { } (又名:螃蟹)

while (true) { }

do { } while (true)


Cra*_*gTP 5

它确实是一个无限循环.

在引擎盖下,编译器/抖动将优化它以(有效地)简单的JMP操作.

它实际上也是如此:

while (true)
{
}
Run Code Online (Sandbox Code Playgroud)

(除了这也被优化掉之外,因为while表达式的(真)部分通常需要某种比较,但是在这种情况下,没有什么可比较的.只需继续循环!)