但是, 当 CLR 类型系统设计时, 没有泛型类型, 因此需要能够存储任何对象的通用哈希表。
哈希表及某些数据结构如何使用 GetHashCode?
假定一个数据类型“set”。...在一个集合中可能需要执行许多操作, 但两个基本的运算是在集合中插入一个新项, 并检查给定项是否在 set 中。我们希望这些操作能够快速进行, 即使该集合很大。...这里的包含方法查询速度是线性增长的;如果列表中有1万项, 则必须查看所有1万项, 以确定该对象不在列表中。这并非优秀的实现方式。
优化方法是牺牲一点内存空间来换取更快的包含方法检查速度。...Guideline: 哈希代码的分布必须是 "随机的"
"随机分布" 的意思是, 如果在被哈希的对象中有共性, 那么在产生的哈希代码中不应该有相似的共性。...数据有时是大量相似的, 一个好的哈希算法将考虑到这一点。
特别要小心“异或”。这是很常见的散列码的结合一起异或他们,但这未必是一件好事。假设您有一个数据结构,其中包含发送地址和家庭地址的字符串。