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

原文地址:https://www.cnblogs.com/sunzhenyong/p/10874088.html