读书人

Object.Equals跟Object.ReferenceEqua

发布时间: 2011-12-14 23:20:17 作者: rapoo

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

有点不明白了。

[解决办法]
从名字上就能看出来,一个是引用比较,一个是值比较。

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

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

读书人网 >C#

热点推荐