Possible Duplicate:
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 实现具有已经从构建时间计算出的哈希码?