【发布时间】:2014-06-03 22:35:24
【问题描述】:
据我(想)知道,Dictionary 被实现为一个哈希表,其中哈希码用于标识一个桶,然后搜索它的键。
在我看来,这意味着一个对象的哈希码在我的程序的单次运行期间保持稳定(松散地说)。
现在,这里
http://msdn.microsoft.com/en-us/library/system.object.gethashcode.aspx
我读过
“哈希码用于在基于哈希表的集合中进行有效插入和查找。哈希码不是永久值。因此: [...] 不要使用哈希码作为键从键控集合中检索对象。"
谁能给我解释一下这是什么意思?
【问题讨论】:
-
嗯,这与其说是一个答案,不如说是一个观察结果,但
obj1.HashCode() == obj2.HashCode()并不暗示obj1.Equals(obj2)(除非您实现了Equals方法来比较哈希码...)。 -
@Blam 也许我解释得不够清楚。我并不是说 HashCode 等同于 Equals。我说的是相反的——除非有人实现了他们的 Equals 来比较哈希码,否则它们是不同的。
-
@Tung 我看不出你的观察如何增加任何价值。
-
@Blam 也许是因为他的“观察”是文档想要表达的意思?