我使用 C# 4.0 并通过调用获取字符串哈希:
"my string".GetHashCode()
此调用生成的代码将存储到数据库中以供将来使用。该哈希码用于查找字符串的某些子集,然后进行相等比较。
问题是:
来自 MSDN:
GetHashCode 方法的默认实现不保证不同对象的返回值唯一。此外,.NET Framework 不保证 GetHashCode 方法的默认实现,并且它返回的值在不同版本的 .NET Framework 之间是相同的。因此,此方法的默认实现不得用作哈希目的的唯一对象标识符。
所以不,你不能假设
GetHashCode
产生的值是稳定的。这也不仅仅是理论上的 - 我们过去已经看到了价值的变化。
如果你想要一个稳定的哈希值,你必须自己生成它。
http://msdn.microsoft.com/en-us/library/system.object.gethashcode.aspx
.NET Framework 不保证默认实现 GetHashCode方法,它返回的值将是相同的 .NET Framework 的不同版本之间。因此, 此方法的默认实现不得用作唯一的 用于散列目的的对象标识符。
不。它不便于携带。除了平衡哈希树之外,您不应该使用此方法进行任何其他操作。它的实现在框架版本之间发生了变化,并且对于 32 位/64 位 CLR 的行为有所不同。 Eric Lippert 有一篇关于此函数的规则和正确用法的
博客文章将哈希值插入数据库。