C#字符串文字GetHashCode()评估不同的给定上下文?

时间:2016-09-02 18:41:48

标签: c# hashcode

所以我有一些代码失败,因为两个字符串文字有HashCodes可以评估相同的东西。虽然我很欣赏碰撞可能发生,但我并不期待这一点。但是,当我在代码中调试一个问题时,我发现如果我们做了

,就会立即进入窗口
"55d02ProductAd".GetHashCode() == "55b0tProductAd".GetHashCode()

它会评估true。不理想,但并非不可能。当我们向另一位同事描述这一点时,他怀疑地写了一个划痕程序

var h1 = "55d02ProductAd".GetHashCode();
var h2 = "55b0tProductAd".GetHashCode();
Console.WriteLine(h1 == h2);

在上面,他们没有评价同样的事情。我们的监视器彼此相邻,我们对不同的输出感到困惑。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

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