c# – .NET字符串哈希函数是否可移植?

Possible Duplicate:
07000

我使用C#4.0并通过调用获取字符串哈希:

"my string".GetHashCode()

此调用生成的代码存储到数据库中以备将来使用。这个哈希码用于查找字符串的一些子集,然后等同的比较。

问题是:

>这是一个标准化的哈希计算吗?我可以假设它是
可能在不同环境中计算相同的散列,如.NET 3.0或未来的.Net版本中的C#?
>可以通过在Java,PL / SQL,Ruby等中编写相同的哈希函数来计算相同的哈希函数吗?
>我可以假设今天生成的哈希将在明天生效
同样的环境?例如当我关闭我的电脑和
再次运行程序,或更改区域设置或其他一些设置?
>可移植性有哪些限制?
>我知道我可以自己做,但也许提供某种可移植性?

从MSDN:

The default implementation of the GetHashCode method does not guarantee unique return values for different objects. Furthermore, the .NET Framework does not guarantee the default implementation of the GetHashCode method, and the value it returns will be the same between different versions of the .NET Framework. Consequently, the default implementation of this method must not be used as a unique object identifier for hashing purposes.

所以不,你不能假定GetHashCode产生的值是稳定的。这不仅仅是理论,而是 – we’ve seen the value change in the past

如果你想要一个稳定的哈希,你必须自己生成它。

翻译自:https://stackoverflow.com/questions/8029529/is-the-net-string-hash-function-portable

转载注明原文:c# – .NET字符串哈希函数是否可移植?