为什么不; ;导致VS中的构建错误?

问题描述 投票:0回答:9

无论多少;如果放在C#代码行的末尾,编译器将不会显示错误并且构建成功。

几乎所有其他语言,如C,C ++和Java。这是不允许的。

c# syntax
9个回答
1
投票

与Eric的博客有趣的是,为什么这不是一个警告。

来自Eric Lippert的博客“我经常被问到为什么一大块难闻的代码不会产生编译器警告。”

http://blogs.msdn.com/b/ericlippert/archive/2011/03/03/danger-will-robinson.aspx

关键是,编译团队是否可以利用宝贵的时间来引入这样的警告?


8
投票

你认为这种模式在C,C ++和Java中是非法的论点是完全错误的。

我推荐你:

C编程语言,第2版,A9.2节:

......这个结构被称为空语句;它通常用于向迭代语句提供空体...

C ++编程语言,第2版,第r.6.2节

表达式为missing的表达式语句称为null语句;它很有用......为迭代语句提供一个空体...

Java语言规范,第1版,第14.5节

空语句什么都不做。

C#语言规范,第4版,第8.3节:

如果在需要语句的上下文中没有要执行的操作,则使用空语句。


6
投票

空声明:

http://msdn.microsoft.com/en-us/library/aa664739(v=vs.71).aspx

不管你有多少 - 仍然什么都不做......

你可以在C / C ++中做同样的事情,也可能是Java:

Why are empty expressions legal in C/C++?


1
投票

为什么不? ;在许多形式的代码流中划分语句。单个;本身就意味着“这里没有任何事情发生”。把一堆;s放在一起仍然会导致,没有任何事情发生!


1
投票

;是一个空洞的陈述,它是完全合法的。你对一系列连续的;有什么异议? :-)


0
投票

添加多个;意味着你添加空语句。他们是合法的。


0
投票

在C,C ++,C#和Java中都允许使用空语句(前面没有任何内容的分号)。


0
投票

它导致空白命令,这就是全部。可能微软决定让他们闪亮的语言出现空白,如果这是程序员想要的话。 :)

作为优化的一部分,编译器很可能正在删除/忽略它们。


0
投票

另外,考虑使用换行符或空格来标记代码块结尾而不是分号的语言。在这些语言中,留空行并不是错误。

© www.soinside.com 2019 - 2024. All rights reserved.