日期:2014-05-19  浏览次数:20792 次

Object.Equals和Object.ReferenceEquals有区别吗?
在什么情况下有区别?
或者什么情况下该选择用哪个?

有点不明白了。

------解决方案--------------------
从名字上就能看出来,一个是引用比较,一个是值比较。

对于大部分的类型,这两者是一样的,但是对于string、int等,Equals会调用它们的Equals方法(它们已经重写该方法),从而对值进行比较。
------解决方案--------------------
Object.Equals 子类可以重写以满足自己比较的需求

Object.ReferenceEquals 为引用比较,也就是说比较的是对象的地址,不能重写
------解决方案--------------------
Object.Equals是调用被比较对象的Equals方法来判断的。
Object.ReferenceEquals永远只比较地址,C#里应该叫引用。只有指向同一个对象的引用才是相等的。