为什么呢(;;)意味着C#
答
这是没有初始值或条件的循环,所以它还将长期持续下去,类似
while (true)
{
// body...
}
你需要使用一个break;
声明走出循环。
答
while(true) { /* body */ }
答
它重复身体永远。
这里是拆解:
IL_0001: br.s IL_0005
IL_0003: nop
IL_0004: nop
IL_0005: ldc.i4.1
IL_0006: stloc.0
IL_0007: br.s IL_0003
LINQPad是一个非常不错的小工具,可以让你探索这样的问题。运行linqpad,将语言下拉列表设置为“C#语句”,放入代码片段,单击运行,单击输出窗口上方的“IL”按钮。如果您不知道IL汇编,只需将鼠标悬停在每个操作码上并弹出英文说明即可。对于这个特定的例子,你将需要点击停止来查看结果按钮,因为这个例子永远循环。
+0
感谢linqpad链接。看起来非常酷。 – Ben 2010-01-10 00:33:12
答
像这样的循环:
for (i = 0; i < 4; i++) { ... }
相同:
i = 0;
while (i < 4) {
...
i++;
}
所以,像这样的循环:
for (;;) { ... }
是一个较短的形式为:
for (;true;) { ... }
所以它成为相同:
;
while (true) {
...
;
}
即初始化和修改是可选的,并且当条件被省略时,它简单地评估为true
。
或返回。或者是一个例外(不是你应该那样做)。 – 2010-01-10 00:12:57
它也适用于所有C语言。 – 2010-01-10 00:16:56
在C中,它会像这样(1){....} – t0mm13b 2010-01-10 01:20:38