System.Type returns 个不同值的 GetHashCode

GetHashCode of System.Type returns different values

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

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

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

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

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

我总是得到相同的哈希码。但为什么 System.Type 的哈希码会发生变化,而 System.String 的哈希码却不会?

谢谢。

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