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幸福轻扬<<基本类型、引用类型、值类型>>):
- CLR via C#: GetHashCode与Hashtable,Dictionary
- GetHashCode 与HashTable ,Dictionary
- C#Hashtable与Dictionary性能
- C#Hashtable与Dictionary性能
- C#Hashtable与Dictionary性能
- C#Hashtable与Dictionary性能
- C#Hashtable与Dictionary性能
- 《CLR via C#》读书笔记-CLR寄宿与AppDomain
- 《CLR Via C#》
- CLR via c#------Introduction
- 《CLR via C#:框架设计》读书笔记 - CLR
- CLR Via C#:Second Edition
- CLR via C#: 关于equals
- 框架结构(CLR Via C#)读书笔记
- .NET(C#) Hashtable Dictionary
- Dictionary 与 Hashtable
- HashTable与Dictionary
- HashTable与Dictionary比较
- nlog 中小型日志组件 解决了应用程序的日志问题
- 北京在绿色城市道路上的一个里程碑
- 相互理解
- Oracle: 通过命令行登陆连接并操作数据库
- Linux 2.6.22.6移植到S3C2440之通过nfs启动qt并添加USB鼠标支持
- CLR via C#: GetHashCode与Hashtable,Dictionary
- Spring - Java/J2EE Application Framework——Spring Framework 开发参考手册
- 编译C++ ----DLL
- 如何增加ORACLE连接数
- VC中常常碰到的链接错误总结
- Oracle、MySQL和PostgreSQL的功能比较
- 呵呵,无语了...
- Cobol的一点网上资料
- Oracle数据库系统使用经验六则【经典博客】