String.GetHashCode()返回不同的值

问题描述 投票:19回答:2

为什么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 x86 hash value when running in x64 mode?

c# string .net-4.0 gethashcode
2个回答
18
投票

根据documentation

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

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


0
投票

是否有可能从某个地方复制了此字符串?

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

尝试检查长度,您已经发现有所不同。您也可以逐字节检查。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.