Q:2個方法同時被重寫的場景?html
A:Dictionary或HashTable的key使用時,必須重寫這兩個方法;spa
由於:
根據key取值的時候也是把key轉換成HashCode而且驗證Equals後再取值,必定要注意驗證時HashCode和Equals的關係是而且(&&)的關係。
htm
也就是說,只要GetHashCode和Equlas中有一個方法沒有重寫,在驗證時沒有重寫的那個方法會調用基類的默認實現,而這兩個方法的默認實現都是根據內存地址判斷的,也就是說,其實一個方法的返回值永遠會是false。其結果就是,存儲的時候你可能任性的存,在取值的時候就是你哭着找不着娘了。對象
注意事項:blog
在程序的生命週期中,相同的對象、變量返回的HashCode是相同的,而且是惟一的。可是絕對不容許作持久性存儲,程序一旦結束並從新啓動後,一樣的對象沒法得到上次程序運行時的HashCode。生命週期
也就是HashCode值跟內存地址有關ip
引用地址:內存
https://www.cnblogs.com/xiaochen-vip8/p/5506478.htmlio