我很想知道为什么允许这样做。
int i=0;;
我偶然输入了那个。但该计划编制。多年后我注意到我输入了;;
之后我尝试使用不同的符号,例如~, !, : etc etc
为什么不允许第一个允许的地方。
很想知道。
答案 0 :(得分:16)
您输入了一个空语句:
int i=0; // that's one statement
; // that's another
C#中的声明没有正文是合法的。
来自C# Language Specification的第8.3节:
空语句什么都不做。
空语句:
;
如果在需要语句的上下文中没有要执行的操作,则使用空语句。
答案 1 :(得分:5)
空语句实际上很有用。看看这个有趣的无限循环示例:
for (;;)
{
// loops infinitely
}
运行以下版本作为证明,但是从无穷远处打破:
int count = 0;
for (;;)
{
count++;
if (count > 10) break;
}
Console.WriteLine("Done");
但是,如果您真的想要进行无限循环,请使用:while (true) {}
而不是for (;;) {}
。 while(true)不那么简洁,易于阅读,并且可以无限期地传达循环的意图。
答案 2 :(得分:1)
额外的;
只标出了一个额外的,虽然是空白的“C#代码行”。其他符号只有在自己放置时才有意义。
答案 3 :(得分:1)
C#(以及许多其他语言)使用分号来分隔语句,而不是关心换行符。空语句有效,因此您可以根据需要添加任意数量的分号。它还意味着您可以将多个语句放在一行上,或者将多个语句拆分为多行 - 编译器不关心。
答案 4 :(得分:0)
因为分号表示语句的结束。其他人没有。你可以有一个空白的陈述。