本周,当我的代码托管在 x64 进程中时,我遇到了一个错误。我正在使用哈希值进行查找,并将该哈希值存储在数据库中。过去生成的哈希值是 x86 哈希,现在生成 x64 哈希,我收到错误,因为查找值不再匹配。
我对此非常怀疑,但我想我还是要问一下。如果我的代码在 x64 进程中运行,是否有办法生成 x86 哈希值?
作为参考,我使用 C# 在 .NET 4.0 上运行。
Edit:
这是我遇到的问题:String.GetHashCode() 返回不同的值 https://stackoverflow.com/questions/4466132/string-gethashcode-returns-different-values
您可以通过使用以下代码创建控制台应用程序来重复该问题:
"DDD.Events.Application.ApplicationReferenceCreated".GetHashCode()
使用 x86 平台运行应用程序,然后使用 x64 平台运行它。
我只是想跨平台获得一致的价值观。但是,我可能只是创建一个预编译的哈希列表,以便在需要时进行故障转移。我只是想知道是否有办法从 GetHashCode() 获得一致的值。我不这么认为,但如果可能的话,这将是我的情况下最简单的解决方案。
恐怕如果您使用 .NET 中的默认实现,那么这是不可能的。他们甚至不保证在不同版本的 .NET 之间返回相同的 id;并明确声明不得将其用作唯一标识符。在 MSDN 上阅读此内容 http://msdn.microsoft.com/en-us/library/system.object.gethashcode.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)