重写Equals方法分为以下三种情况:
1.引用类型的基类没有重写Equals
2.引用类型的基类重写了Equals
3.值类型重写了Equals
通常写法是:
对象是否为空,为空返回false
对象类型是否相同,不同返回false
类型转换后进行引用与值的比较如下:
Object.Equals(v1,v2) ,不同返回false
v1.Equals(v2),不同返回false
对于基类,if(!base.Equals(v2)) return false;
值类型可以自己实现强类型的Equals,避免拆箱与装箱操作.注意System.ValueType.Equals()利用了反射实现,效率不高.
注意:Object.ReferenceEquals();
重写Equals必须重写GetHashCode()