与使用((object)obj1 == (object)obj2)
相比,使用object.ReferenceEquals
方法是否有额外的开销
在第一种情况下,会涉及一个静态方法调用,而在这两种情况下,都会涉及到某种形式的对象类型转换。
即使编译器平衡了这些方法,不等式又如何呢?
(object)obj != null
与……相比
!object.ReferenceEquals(obj,null)
我认为在某个时刻,逻辑否定将发生在!=运算符中,或者应用于ReferenceEquals方法的结果。你认为如何?
还有一个需要考虑的可读性问题。在检查相等时,ReferenceEquals似乎更清晰,但对于不平等,人们可能会错过object.ReferenceEquals
之前的!
,而第一个变体中的!=
很难忽略。
https://stackoverflow.com/questions/735554
复制相似问题