对象判等规则

l 值相等还是引用相等决定于具体的需求,Equals 方法的覆写实现也决定于类型想要实现的判等逻辑。
l 几个判等方法相互引用,所以对某个方法的覆写可能会影响其他方法的执行结果。
l 如果覆写了 Equals 虚方法,则必须重新实现 GetHashCode 方法,使二者保持同步。
l 禁止从 Equals 方法或者“==”操作符抛出异常,应该在 Equals 内部首先避免 null 引用异常,要么相等要么不等。
l ReferenceEquals 方法主要用于判别两个对象的唯一性,比较两个值类型则一定返回 false。
l ReferenceEquals 方法比较两个 System.String 类型的唯一性时,要注意 String 类型的特殊性:字符串驻留。
l 实现 ICompare 接口的类型必须重新实现 Equals 方法。
l 值类型最好重新实现 Equals 方法和重载==操作符,因为默认情况下实现的是引用相等。

原文地址:https://www.cnblogs.com/lucienbao/p/Object_Equal_Rule.html