等于 -
1- 覆盖 GetHashCode 方法以允许类型在哈希表中正常工作。
2- 不要在 Equals 方法的实现中抛出异常。相反,为空参数返回 false。
3-
x.Equals(x) returns true.
x.Equals(y) returns the same value as y.Equals(x).
(x.Equals(y) && y.Equals(z)) returns true if and only if x.Equals(z) returns true.
只要 x 和 y 引用的对象没有被修改,对 x.Equals(y) 的连续调用就会返回相同的值。
x.Equals(null) returns false.
4- 对于某些类型的对象,最好让 Equals 测试值相等而不是引用相等。如果两个对象具有相同的值,即使它们不是同一个实例,Equals 的此类实现也会返回 true。
例如 -
Object obj1 = new Object();
Object obj2 = new Object();
Console.WriteLine(obj1.Equals(obj2));
obj1 = obj2;
Console.WriteLine(obj1.Equals(obj2));
输出 :-
False
True
而比较 -
将当前实例与另一个相同类型的对象进行比较,并返回一个整数,该整数指示当前实例在排序顺序中是在另一个对象之前、之后还是出现在相同位置。
它返回 -
小于零 - 此实例在排序顺序中位于 obj 之前。零 - 此实例在排序顺序中与 obj 出现在同一位置。大于零 - 此实例在排序顺序中位于 obj 之后。
如果对象与实例的类型不同,它可能会抛出 ArgumentException。
例如,您可以访问这里。
所以我建议最好使用 Equals 代替 compareTo。