为什么带有多个分号的代码会编译?

San*_*eep 4 c# syntax

我很想知道为什么这是允许的.

int i=0;;
Run Code Online (Sandbox Code Playgroud)

我偶然输入了那个.但该计划编制.经过很多天我打字后才注意到它;;

之后我尝试了不同的符号 ~, !, : etc etc

为什么不允许第一个允许的地方.

只是好奇才知道.

Mic*_*tta 16

您输入了一个空语句:

int i=0; // that's one statement
; // that's another
Run Code Online (Sandbox Code Playgroud)

在C#中声明没有正文是合法的.

C#语言规范的第8.3节开始:

空语句什么都不做.

空声明:
;
如果在需要语句的上下文中没有要执行的操作,则使用空语句.


Pau*_*sik 5

空语句实际上可能很有用.看看这个有趣的无限循环示例:

    for (;;)
    {
        // loops infinitely
    }
Run Code Online (Sandbox Code Playgroud)

运行以下版本作为证明,但是从无穷远处打破:

    int count = 0;
    for (;;)
    {
        count++;
        if (count > 10) break;
    }

    Console.WriteLine("Done");
Run Code Online (Sandbox Code Playgroud)

但是,如果你真的想要进行无限循环,请使用:while (true) {}而不是for (;;) {}.while(true)不那么简洁,更容易阅读,并且可以无限期地传达循环的意图.