【发布时间】:2014-02-12 04:03:08
【问题描述】:
我这样声明了一行 C# 代码
int hashcode = "apple".GetHashCode();
在我的电脑、工作的电脑和朋友的电脑上,结果是 1657858284。在开发服务器上,结果是 1548091822。我有没有办法告诉项目始终让 GetHashCode() 产生 1657858284 ,不管它在哪个服务器上?
更多注释 起初,我注意到版本有所不同...... 1657858284 结果来自 .NET 3.5 和 .NET 4.0。 1548091822 来自 .NET 2.0。
然后我告诉 Visual Studios 2010 将项目编译为 .net 2.0 项目,但它仍然给了我 1657858284。
【问题讨论】:
-
那么,电脑之间有什么区别呢?可能是不同的 .NET 版本?
-
[来自 MSDN] (msdn.microsoft.com/en-us/library/system.object.gethashcode.aspx) ".NET Framework 不保证 GetHashCode 方法的默认实现,不同版本的 .NET Framework 之间返回的值相同。”
-
据我了解,GetHashCode 仅用作例如哈希映射的查找键。所以我不确定您是否可以期望 GetHashCode() 产生类似的结果。但是,我相信您可以覆盖 GetHashCode()
-
Saunders - 好的,添加了更多细节
-
你应该阅读:blogs.msdn.com/b/ericlippert/archive/2011/02/28/… 具体来说:“GetHashCode 的消费者不能依赖它随着时间的推移或跨应用程序域而保持稳定”
标签: c# gethashcode