26

为什么 GetHashCode() 为相同的字符串返回不同的值?我无法描述如何复制它,但相信这不是一个恶作剧,并且以下两行来自我的观察窗口在两个不同的时间:

"DDD.Events.Application.ApplicationReferenceCreated".GetHashCode() -1386151123 int
"DDD.Events.Application.ApplicationReferenceCreated".GetHashCode() 1858139950 int

这怎么可能发生?

我不知道这是否有帮助,但我在 VS 2010 中的 .NET 4.0 上运行,并且正在调试 NServiceBus 应用程序。

更新:

如果您想知道我最终为此做了什么,请查看此线程:Can you generate an x​​86 hash value when running in x64 mode?

4

2 回答 2

23

根据文件

如果两个字符串对象相等,则 GetHashCode 方法返回相同的值。但是,每个唯一的字符串值都没有唯一的哈希码值。不同的字符串可以返回相同的哈希码。

因此,两个调用必须有其他一些影响才能给出不同的结果。一种理论是您在调用之间切换了平台,从 x86 到 x64,反之亦然。

于 2010-12-16T22:59:53.790 回答
0

你有可能从某个地方复制了这个字符串吗?

我有同样的问题。我以某种方式复制了值,BOM 标题在第一个位置是不可见的。

尝试检查长度,您已经看到了差异。您也可以逐字节检查。

于 2020-04-16T05:15:32.063 回答