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

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

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

先感谢您。

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

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

看看这篇文章

看看这篇有趣的文章

性能提示:首选(((Object)x)== null)到Object.ReferenceEquals(x,null)

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

干杯马蒂亚斯

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

虽然它们编译成不同的东西,但它们通常具有相同的效果。 if (myObject == null)导致ceq操作码,我希望编译为更快的代码。 object.ReferenceEquals是一个方法调用,就像任何其他方法一样。

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

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