CLR via C#: GetHashCode与Hashtable,Dictionary

来源:互联网 发布:淘宝模板制作教程 知乎 编辑:程序博客网 时间:2024/05/21 17:20

      Microsoft为了实现对不同对象的区分,以方便将其放入HashTable,通过hashcode找对对应 键/值 对,所以为object设置了这样一个GetHashCode的方法.

     获取一个唯一的哈希码区分,object内部的算法不清楚,但是它提供的是虚方法,你自己可以覆写自己的区分方式,当然这要遵循一定的原则。

      另外,如果覆写Equal方法的话,就一定要覆写GetHashCode方法,原因是: hashtable判断两个对象是否Equal需要用到该方法,这里的对象是指key对象。
      需要特别说明的是,这里获取的hash code 可以在某次应用中用于区分对象,但是不能将某次获取的hashcode作为永久标志应用,它是会因算法的重写而变的。

 

Dictionary要用到GetHashTable的验证代码和调试图片如下,不过dic中的元素个数是2不是1,这是因为hash算法的缘由可以自己看一下hash算法(部分文字参考自cnblogs幸福轻扬<<基本类型、引用类型、值类型>>):

 

 

原创粉丝点击