GetHashCode Equals 与 Dictionary , Hash , List 的关系


Dictionary , HashSet , List 都可以看到 Contains 之类的函数。



比如 Dictionary.ContainsKey( keyTest ) 函数首先调用 keyTest.GetHashCode 比较是否已经有这样一个hashCode, 如果有,则直接返回true , 如果没有,还不能断定必然不存在这样一个key , 因为hashcode是有冲突的可能的 ( hash的特性:相等则表示的对象一定相等,不相等说明对象有可能不相等,也可能相等 ), 所以再使用Equals这个 override 的方法查找。

默认的Equals 对于object 直接就是 ReferenceEquals 。




也就是说,如果你偷懒, 你可以不写GetHashCode, 只要写好Equals ,  那些结构Dictionary等一样正常,只是性能很差。毕竟hashcode计算速度快,比较速度更快。

posted on 2012-08-27 17:57  norsd  阅读(132)  评论(0编辑  收藏  举报

导航