给定两个不同的字符串,情况是否总是这样s.GetHashCode() != s1.GetHashCode()
?
是否存在不同整数的数量小于不同字符串的数量?
No. Just as a simple thought experiment: How many strings are there (hint: many more than 232 and thus how many unique hash codes can there be (hint: 232. See the problem? http://en.wikipedia.org/wiki/Pigeonhole_principle)
哈希码只需要是equal每当Equals
返回两个对象相等。此外,每当两个哈希码not相等,那么对象本身不可能相等。没有进一步的要求,但他们should分布良好,以便哈希表能够良好运行。所以基本上是:
请注意省略相应的 ⇐ 变体。这不是等价的,只是两个含义。
引用文档 http://msdn.microsoft.com/en-us/library/system.object.gethashcode.aspx:
哈希函数必须具有以下属性:
-
如果两个对象比较相等,则每个对象的 GetHashCode 方法必须返回相同的值。但是,如果两个对象比较不相等,则两个对象的 GetHashCode 方法不必返回不同的值。
-
只要不修改确定对象 Equals 方法返回值的对象状态,对象的 GetHashCode 方法就必须始终返回相同的哈希码。请注意,这仅适用于应用程序的当前执行,并且如果应用程序再次运行,则可以返回不同的哈希码。
-
为了获得最佳性能,哈希函数必须为所有输入生成随机分布。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)