让我从一个现实生活中的例子开始:
Customer: Alex, just noticed something strange in the RemovalProcessor at line 138:
if (Session.Handler.ExecutePrefetchTasks()==null); Session.ExecuteDelayedQueries();
Should the semicolumn behind the 'if' be there?
Me: Oops... I'll send this to our guys to check, but most likely, you're right.
虽然这种情况很少见,但我承认几乎所有大项目都有类似的问题。
我知道 C# 中的分号(和语句 block )使用规则无法更改(我个人更喜欢 Python 风格)。但我认为用 if
语句识别正是这种情况并将其归类为错误或警告是个好主意。
我想到的几个问题:
为什么在这种情况下会产生警告或错误?
因为这是开发人员的错误,而且有 99% 的可能性。
为什么在这种情况下错误更可取?
在许多情况下,开发人员会忽略警告。
我明白这是他们自己的问题,还有/warnaserror (威胁警告作为错误)切换,但由于这是一个错误 很有可能,而且,如果这不是错误(真的吗?;)), 解决这个问题很容易,可能最好对这种情况进行分类 作为一个错误。
最后,这种情况下的错误不会“限制”开发人员, 因为这样的代码可以(而且很可能必须)总是被重写 没有
if
语句。为什么在这种情况下警告更可取?
这不会破坏兼容性;我也怀疑一些代码生成器 可能会根据当前行为生成代码。
所以我很高兴听到您对此的看法。
最佳答案
它已经产生了一个警告:
我同意你的看法,错误会更可取(如果你真的想要一个空语句,总是可以将它写成 { }
,这样更明确)——但他们不会以这种方式更改 C# 语言。这将是一个突破性的变化,我怀疑他们(阅读:Eric Lippert 的)的理由是“ yield 不会超过成本”。
关于c# - C# 中的空 "if"语句是否会导致错误或警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3544776/