天天看點

c#中Equals方法和GetHashCode

c#中,一般來說,重寫了Equals方法,就要重寫GetHashCode

關于Equals方法,一般都會按照自己的需求編寫

關于GetHashCode,MS說的很清楚

兩個相同的對象(即Equals方法傳回true)必須傳回相同的hash code

兩個不相同的對象,傳回true或者false都可以

如果兩個相同的對象,hash code傳回false了,結果會怎麼樣?

如上面代碼,現在相同的對象一定傳回相同的hashcode,因為他們的Id 相同,可以檢視字典的元素

c#中Equals方法和GetHashCode

字典隻有兩個元素,因為stu1和stu2是同一個對象,隻能代表一個鍵

如果修改成這樣的代碼

現在的結果變成了3個元素,原因是stu1和stu2的哈希值不相同,就不需要再比較Equals方法的結果了

c#中Equals方法和GetHashCode

繼續閱讀