什麽时候需要覆盖Equals?
自定义的值类型需要覆盖,因爲系统默认的实现是基于反射的,效率不高。
自定义的引用类型要根据业务需要来决定是否提供覆盖。
什麽时候需要覆盖operator==()?
自定义的值类型需要覆盖,塬因和Equals一样。
自定义的引用类型一般不要覆盖,因爲框架的默认语义是按引用比较。
如何正确的覆盖Equals?
首先覆盖Equals的同时还要覆盖GetHashCode
其次还要实现IEquatable接口,该接口实现类型安全的比较
所以基本上一个标準实现如下: