c#中,一般來說,重寫了Equals方法,就要重寫GetHashCode
關于Equals方法,一般都會按照自己的需求編寫
關于GetHashCode,MS說的很清楚
兩個相同的對象(即Equals方法傳回true)必須傳回相同的hash code
兩個不相同的對象,傳回true或者false都可以
如果兩個相同的對象,hash code傳回false了,結果會怎麼樣?
如上面代碼,現在相同的對象一定傳回相同的hashcode,因為他們的Id 相同,可以檢視字典的元素

字典隻有兩個元素,因為stu1和stu2是同一個對象,隻能代表一個鍵
如果修改成這樣的代碼
現在的結果變成了3個元素,原因是stu1和stu2的哈希值不相同,就不需要再比較Equals方法的結果了