我应该检查一个对象是第一个还是第二个?

ben*_*wey 5 c#

比如说我创造了一只鸭子

Duck myDuck = DuckFactory.CreateDuck();
Run Code Online (Sandbox Code Playgroud)

在过去,我总是检查myDuck是否为空

if (myDuck == null)
{
  // Do stuff
}
Run Code Online (Sandbox Code Playgroud)

我最近查看了一些首先检查null的代码.

if (null == myDuck)
{
   // Do stuff
}
Run Code Online (Sandbox Code Playgroud)

在我看来,这些是相同的,但这两者之间有什么不同吗?一个人对另一个人有任何表现上的好处吗?是否有建议的最佳做法来检查对象是否为空?

cle*_*tus 16

第二个源于C/C++(和其他地方),这是一个有效的结构

if (myDuck = null) {
}
Run Code Online (Sandbox Code Playgroud)

这在C#中无效(除非你的表达式解析为布尔值).例如,这是有效的C#

bool b = ...
if (b = true) {
}
Run Code Online (Sandbox Code Playgroud)

当你想要比较时,将常数放在第一位是防御性的,以阻止意外分配.我会说更多的人把变量放在左边,但是将常量放到左边也没有错.

只需选择一个并保持一致.