检查对象是否为空的最佳和最快方法

时间:2010-12-10 10:57:23

标签: c# .net

我经常在源代码中看到使用 if(object.ReferenceEquals(myObject,null))来检查myObject是否为null而不是 if(myObject == null)我很熟悉。

使用第一种方式而不是第二种方式是否有任何特殊原因(如速度,可读性等)?你用哪一个?

提前谢谢。

6 个答案:

答案 0 :(得分:5)

使用ReferenceEquals时,请确保不应用特殊处理(例如重载运算符)。如果与未绑定的泛型一起使用,这也会导致不同的结果。

答案 1 :(得分:4)

简单的事情通常是最有效的: (myObject == null)性能更高

查看this文章

答案 2 :(得分:3)

答案 3 :(得分:1)

==运算符可以通过类实现重载,因此它可能不会进行引用比较(尽管可能应该使用null s)。 object.ReferenceEquals不能,因此可靠地始终进行参考比较。

干杯 的Matthias

答案 4 :(得分:1)

无法覆盖ReferenceEquals方法,因此您始终可以确定比较将比较对象引用,而不是传递给Equals方法的某些覆盖。

答案 5 :(得分:1)

它们通常具有相同的效果,尽管它们编译成不同的东西。 if (myObject == null)导致ceq操作码,我希望编译为更快的代码。 object.ReferenceEquals是一种方法调用。

myObject使用operator=方法时,它们会有所不同;如果存在,您的代码将调用此方法,而不是使用ceq。然后operator=可以随心所欲。

始终if (myObject == null),除非您有理由不这样做。