当使用 GetHashCode()
方法获取字符串的哈希码时,它是否有可能返回零,或者使用的算法是否有其他保证?
我问的原因是我有一个用例,我需要为空字符串发明一个散列,我正在考虑使用零而不是散列一些常量字符串。如果我这样做,我发生碰撞的可能性有多大(除非有一个明显的事实,即总是可能发生碰撞)
最佳答案
没有办法明确回答这个问题。 String.GetHashCode() 的行为被记录为未定义,可能会在框架版本之间发生变化,并且在 32 位和 64 位系统之间会有所不同。
如果您选择了其他值,则可能会发生碰撞。零是一个相当合理的默认值。
Nullable.GetHashCode()如果它存储一个空值,则返回 0,因此返回零的哈希码有一些先例。
关于.net - 字符串的 GetHashCode() 方法可以返回零吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10943533/