【发布时间】:2012-07-18 20:40:09
【问题描述】:
可能重复:
Why might a System.String object not cache its hash code?
我一直认为,鉴于 .Net 字符串是不可变的,String.GetHashCode() 不必在每次调用时都计算哈希值——如果字符不会改变,哈希值对于给定的实例是恒定的System.String,我天真地想; String.GetHashCode() 可能有 O(1) 复杂度。
Reverse engineering it 打破了这个假设。
当然,哈希码并不意味着是恒定的and so on,但是什么可以阻止 String 实现的哈希码已经从构建时间计算出来?
【问题讨论】:
-
除了有点复杂和4字节的内存,什么都没有。
-
我觉得这个问题太好了,直到今天都没有被问到。不幸的是,在我写它的时候它从来没有出现过……我只是投票决定关闭它。