gpt4 book ai didi

c# - GetHashCode() 在不同的服务器上给出不同的结果?

转载 作者:可可西里 更新时间:2023-11-01 08:14:27 28 4
gpt4 key购买 nike

我这样声明了一行 C# 代码

int hashcode = "apple".GetHashCode();

在我的电脑、工作的电脑和 friend 的电脑上,结果是 1657858284。在开发服务器上,结果是 1548091822。有没有办法让我告诉项目总是让 GetHashCode() yield 1657858284 , 不管它在哪个服务器上?

更多笔记起初,我注意到版本存在差异...1657858284 结果来自 .NET 3.5 和 .NET 4.0。 1548091822 来自 .NET 2.0。

然后我告诉 visual studios 2010 将项目编译为 .net 2.0 项目,但它仍然给我 1657858284。

最佳答案

正如其他人指出的那样,这与文档一致。您绝不能依赖 GetHashCode 返回相同的东西,永远。您可以依赖的唯一不变性是如果对象没有以任何改变其相等语义的方式发生突变,它将在同一应用程序域中的同一对象上返回相同的值。如果不满足这些条件中的任何一个——如果两个对象位于不同的应用程序域中,或者对象以改变其相等语义的方式发生了变异——那么你无法保证“相同”的对象将返回相同的哈希值代码。

唯一应该使用散列码的是平衡散列表。任何其他用途都是“标签外”,风险自负。不要这样做。如果您需要跨任意边界工作的稳定字符串哈希,请使用行业标准算法,如 SHA256 或其他算法。

如果您对这个主题感兴趣,请参阅我的关于哈希问题的文章存档以获取更多详细信息:

http://blogs.msdn.com/b/ericlippert/archive/tags/hashing/

关于c# - GetHashCode() 在不同的服务器上给出不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6114772/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com