Inconsistency in Equals and GetHashCode methods
在阅读了这个问题之后,"int"和"sbyte"gethashcode函数为什么生成不同的值?我想进一步挖掘,发现以下行为:
1 2 3 4 5 6 7 8 9 | sbyte i = 1; int j = 1; object.Equals(i, j) //false (1) object.Equals(j, i) //false (2) i.Equals(j) //false (3) j.Equals(i) //true (4) i == j //true (5) j == i //true (6) i.GetHashCode() == j.GetHashCode() //false (7) |
If the two objects do not represent the same object reference and
neither is null, it calls objA.Equals(objB) and returns the result.
This means that if objA overrides the Object.Equals(Object) method,
this override is called.
我很感兴趣,如果有人能解释为什么在我看来,在相当基础的.NET类型中观察到不一致的行为。
你的问题是你错过了
其他的比较工作是在一个