System.Type的GetHashCode返回不同​​的值

时间:2015-07-29 14:13:48

标签: c# hash types gethashcode

为什么GetHashCode会返回相同类型的不同值。如果我执行此代码:

Console.WriteLine(typeof(Guid).GetHashCode());

在不同的应用程序中,我得到不同的哈希码。

如果我在不同的应用程序中多次执行以下语句:

Console.WriteLine("ABC".GetHashCode());

我总是得到相同的哈希码。但是为什么哈希码会更改为System.Type,而不会更改为System.String

谢谢。

1 个答案:

答案 0 :(得分:5)

System.StringSystem.Type都不保证可持久的哈希码作为其合同的一部分。在您的特定情况下恰好与System.String一起使用的事实是无法依赖的实现细节。如果需要持久化或导出字符串的哈希值,请使用其他字符串哈希方法。保留或导出有关类型的信息应该使用FullNameAssemblyQualifiedName等信息,具体取决于具体要求。