Equals和GetHashCode

Q:2个方法同时被重写的场景?html

A:DictionaryHashTablekey使用时,必须重写这两个方法;spa

由于:
根据key取值的时候也是把key转换成HashCode而且验证Equals后再取值,必定要注意验证时HashCodeEquals的关系是而且(&&)的关系。
htm

也就是说,只要GetHashCodeEqulas中有一个方法没有重写,在验证时没有重写的那个方法会调用基类的默认实现,而这两个方法的默认实现都是根据内存地址判断的,也就是说,其实一个方法的返回值永远会是false。其结果就是,存储的时候你可能任性的存,在取值的时候就是你哭着找不着娘了。对象

 

 

注意事项:blog

在程序的生命周期中,相同的对象、变量返回的HashCode是相同的,而且是惟一的。可是绝对不容许作持久性存储,程序一旦结束并从新启动后,一样的对象没法得到上次程序运行时的HashCode生命周期

也就是HashCode值跟内存地址有关ip

 

引用地址:内存

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

相关文章
相关标签/搜索