这个问题已经在这里有了答案:




已关闭8年。






我正在生成很多字符串,那么我的问题是:

2个不同的字符串可以在C#中具有相同的哈希码吗?

通过哈希码,我的意思是:

string s = "Hello";
s.GetHashCode();

我的问题是有关C#生成字符串的算法的更多信息,也许
当所有其他哈希码已经生成或可能未生成时,就会发生冲突。
有人可能有这个答案。

最佳答案

是的。哈希码不是唯一的。有2 ^ 32(4,294,967,296)个可能的哈希码(一个32位整数中的每个整数值一个)。实际上,存在无限数量的可能字符串。显然,无限个字符串中的每个字符串都有不同数量的有限数字是不可能的。

具有相同哈希码的两个不同字符串(或与此相关的任何值)称为“冲突”。一个好的哈希算法将尝试确保最大程度地减少冲突(尽管无法消除冲突)。通常,这将取决于实践中的实际数据类型。在字符串的情况下,这意味着相似(或大小)相似的字符串应(理想地)不那么容易发生冲突。

我假设您是在问,因为您正在考虑使用字符串的哈希码作为字符串的唯一标识符。 Don't do that

Here是一个链接,如果您感兴趣的话,它通常会更详细地介绍哈希码。

关于c# - 2个不同的字符串可以在C#中具有相同的哈希码吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13092985/

10-17 01:47