c#字符串字面量GetHashCode()在给定的上下文中计算不同

本文关键字:上下文 计算 字符串 GetHashCode | 更新日期: 2023-09-27 18:05:19

所以我有一些代码失败,因为两个字符串字面量有HashCodes,可以评估为相同的东西。虽然我知道碰撞可能会发生,但我并没有完全预料到这一点。但是在调试代码中的一个问题时,我和我的同事发现,在一个即时窗口中,如果我们做了

"55d02ProductAd".GetHashCode() == "55b0tProductAd".GetHashCode()

等于true。不理想,但并非不可能。当我们向另一位同事描述这一点时,他不相信,他写了一个临时程序,

var h1 = "55d02ProductAd".GetHashCode();
var h2 = "55b0tProductAd".GetHashCode();
Console.WriteLine(h1 == h2);
在上面的例子中,它们的值不是相同的。我们的显示器彼此相邻,我们对不同的输出感到困惑。任何想法吗?

c#字符串字面量GetHashCode()在给定的上下文中计算不同

哈希码仅在合同上有义务为单个应用程序执行上下文中的值生成相同的哈希值。由于比较的是完全不同应用程序的GetHashCode值,因此它们没有义务相等。