读经典——《CLR via C#》(Jeffrey Richter著) 笔记_对象的相等性和同一性

【重写Equals注意的事项】

1. Equals 必须是自反的;--x.Equals(x)肯定为 true

2. Equals 必须是对称的;--x.Equals(y)肯定返回与y.Equals(x)相同的值

3. Equals 必须是可传递的;--x.Equals(y)返回true, y.Equals(z)返回true,则x.Equals(z)肯定返回true

4. Equals 必须是一致的。比较的两个值没有变,Equals返回的值(true或false)也不能变

5. 让类型实现 System.IEquatable<T>接口的 Equals 方法,这个泛型接口允许你定义一个类型安全的Equals方法。通常,你实现的Equals方法应获取一个Object参数,以便在内部调用类型安全的Equals方法。

6. 重载 == 和 != 操作符方法 。通常应实现这些操作符方法,在内部调用类型安全的Equals方法。

原文地址:https://www.cnblogs.com/lishidefengchen/p/4488584.html