.net - 字符串的 GetHashCode() 方法可以返回零吗?

标签 .net hashcode

当使用 GetHashCode() 方法获取字符串的哈希码时,它是否有可能返回零,或者使用的算法是否有其他保证?

我问的原因是我有一个用例,我需要为空字符串发明一个散列,我正在考虑使用零而不是散列一些常量字符串。如果我这样做,我发生碰撞的可能性有多大(除非有一个明显的事实,即总是可能发生碰撞)

最佳答案

没有办法明确回答这个问题。 String.GetHashCode() 的行为被记录为未定义,可能会在框架版本之间发生变化,并且在 32 位和 64 位系统之间会有所不同。

如果您选择了其他值,则可能会发生碰撞。零是一个相当合理的默认值。

Nullable.GetHashCode()如果它存储一个空值,则返回 0,因此返回零的哈希码有一些先例。

关于.net - 字符串的 GetHashCode() 方法可以返回零吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10943533/

相关文章:

java - 您可以只在 hashCode() 方法中返回字段的 hashCode() 值吗?

java - 相同的对象不同的哈希码?

Java:object.hashCode() 和 Objects.hashCode(object)

java - 整数的 hashCode 的最佳实现是什么?

.net - .NET 中的视频处理

c# - 如何在 Serilog JsonFormatter 输出中包含 "Message"和 "MessageTemplate"?

c# - 如何将 WinForms 应用程序最小化到通知区域?

c# - WPF MVVM ListBox.ItemTemplate CheckBox IsChecked 绑定(bind)

c# - 为什么Datareader无法初始化?

java - 为什么我的 HashSet 存储 2 个具有相同 hashCode 的相同对象?