【发布时间】:2011-11-18 05:20:59
【问题描述】:
以下代码产生 46104728 的输出:
using System;
namespace TestApplication
{
internal static class Program
{
private static void Main()
{
Type type = typeof(string);
Console.WriteLine(type.GetHashCode());
Console.ReadLine();
}
}
}
但这样做也是如此:
using System;
namespace TestApplication
{
internal static class Program
{
private static void Main()
{
Type type = typeof(Program);
Console.WriteLine(type.GetHashCode());
Console.ReadLine();
}
}
}
然而在http://ideone.com 上,它会为每种类型产生不同的结果。这个问题现在已经在不止一个系统上重现了。我现在正在使用 .NET 4.0。
【问题讨论】:
-
+1,有趣。虽然它们与我不匹配,但结果有时似乎不一致。
-
当您同时查看它们的哈希码时,我在 .Net 4.0、3.5 和 2.0 上没有相同的行为。似乎 Type 哈希码从一个值开始,并且基于它们的使用顺序或外观(尽管我不确定)。
-
@sixlettervariables 您是处于调试模式还是发布模式,您是否使用附加的调试器 (VS) 对其进行测试?
-
@leppie,并非无关紧要,Eric 非常清楚地说明了 GetHashCode 的用例是什么,并且您不应该依赖于跨时间和跨系统的实现,请参阅规则 3。
标签: c# .net reflection