string.GetHashCode()会返回负值吗?

Eri*_*Yin 14 c# string hash gethashcode

我尝试了一批随机字符串,我得到的所有值都是正数,但我想知道:

String.GetHashCode()返回负数还是0?

由于返回值是int,所以我猜它可能是,所以如果是这种情况,我必须改变我的逻辑.

如果您有答案或有一些官方消息来源,请分享

SLa*_*aks 25

是的,它可以返回负值.

不能有任何与GetHashCode()值一起使用的逻辑.
GetHashCode()不保证是唯一的,可以在构建之间更改.

GetHashCode() 必须被视为不透明的标记,可以与其他哈希组合或修改为哈希表.

  • @EricYin:**不要这样做**!见http://blogs.msdn.com/b/ericlippert/archive/2005/10/24/do-not-use-string-hashes-for-security-purposes.aspx (5认同)
  • SLaks是对的 - 特别是在32位和64位架构之间. (2认同)
  • 是的; 你_必须_使用别的东西。`GetHashCode()` 仅适用于内存中的哈希表。您可能应该使用 SHA512。 (2认同)
  • 更新了 Eric Lippert 博客文章的工作 URL:https://blogs.msdn.microsoft.com/ericlippert/2005/10/24/do-not-use-string-hashes-for-security- Purposes/ (2认同)