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

Ben*_*dEg 1 c# hash types gethashcode

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

Console.WriteLine(typeof(Guid).GetHashCode());
Run Code Online (Sandbox Code Playgroud)

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

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

Console.WriteLine("ABC".GetHashCode());
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

use*_*812 5

既不System.String也不System.Type保证持久化的散列码作为其合同的组成部分.System.String在您的特定情况下恰好使用它的事实是一个不能依赖的实现细节.如果需要持久化或导出字符串的哈希值,请使用其他字符串哈希方法.坚持或导出关于类型的信息应该使用信息,如FullName,AssemblyQualifiedName和其他人,这取决于具体要求.