当前位置: 代码迷 >> C# >> 既是Object类型有个虚拟版本的Equals,为什么.net还要提供一个静态方法Equals
  详细解决方案

既是Object类型有个虚拟版本的Equals,为什么.net还要提供一个静态方法Equals

热度:7   发布时间:2016-05-05 03:22:37.0
既然Object类型有个虚拟版本的Equals,为什么.net还要提供一个静态方法Equals?
感觉这个静态方法是多余的.
难道Equals(a,b)和a.Equals(b)结果可能不同?
如果可能不同,那这个也太坑爹了... ...

为什么要实现IComparable接口就要重写Equals方法呢? 我不重写这个方法也能实现接口啊
------解决思路----------------------
IComparable不就是定义了Equals方法吗?
------解决思路----------------------
引用:
IComparable不就是定义了Equals方法吗?

这个你误解了。‘比较大小’和‘确认相同’可以是两回事。

IComparable是‘可比较大小’,要实现int CompareTo。
Equals是确定是否‘相同’。

可以比较大小,就可以排序。但是,两个对象大小比较一样,也不能总是确认两个对象‘相同’。
确定是否‘相同’,不总是需要‘可比较大小’。比如'去掉重复'时,不需要能区分出大小来。



------解决思路----------------------
引用:
感觉这个静态方法是多余的.
...


可能是多余了,但它提供了方便。它帮你判断a是否是null,可以避免NullReferenceException.
------解决思路----------------------
 这里不是多余的吧。。比如Equals(a,b) 这里你可以传任何两个对象。。但如果你用a.Equals(b),这里要调用的资源就要多点了。。你就想如果你专门写了个方法,里面用到了判断的话,,这里Equals(a,b)可能更好一点
  相关解决方案