Equals和GetHashCode

Q:2個方法同時被重寫的場景?

A:DictionaryHashTablekey使用時,必須重寫這兩個方法;

因爲:
根據key取值的時候也是把key轉換成HashCode並且驗證Equals後再取值,一定要注意驗證時HashCodeEquals的關係是並且(&&)的關係。

也就是說,只要GetHashCodeEqulas中有一個方法沒有重寫,在驗證時沒有重寫的那個方法會調用基類的默認實現,而這兩個方法的默認實現都是根據內存地址判斷的,也就是說,其實一個方法的返回值永遠會是false。其結果就是,存儲的時候你可能任性的存,在取值的時候就是你哭着找不着娘了。

 

 

注意事項:

在程序的生命週期中,相同的對象、變量返回的HashCode是相同的,並且是唯一的。但是絕對不允許做持久性存儲,程序一旦結束並重新啓動後,同樣的對象無法獲得上次程序運行時的HashCode

也就是HashCode值跟內存地址有關

 

引用地址:

https://www.cnblogs.com/xiaochen-vip8/p/5506478.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章