为什么GetHashCode
会返回相同类型的不同值。如果我执行此代码:
Console.WriteLine(typeof(Guid).GetHashCode());
在不同的应用程序中,我得到不同的哈希码。
如果我在不同的应用程序中多次执行以下语句:
Console.WriteLine("ABC".GetHashCode());
我总是得到相同的哈希码。但是为什么哈希码会更改为System.Type
,而不会更改为System.String
?
谢谢。
答案 0 :(得分:5)
System.String
和System.Type
都不保证可持久的哈希码作为其合同的一部分。在您的特定情况下恰好与System.String
一起使用的事实是无法依赖的实现细节。如果需要持久化或导出字符串的哈希值,请使用其他字符串哈希方法。保留或导出有关类型的信息应该使用FullName
,AssemblyQualifiedName
等信息,具体取决于具体要求。