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.String
和 System.Type
都不能保证将持久哈希码作为其合约的一部分。在您的特定情况下它恰好与 System.String
一起使用这一事实是一个无法依赖的实现细节。如果您需要保留或导出字符串的散列,请使用不同的字符串散列方法。保留或导出有关类型的信息可能应该使用 FullName
、AssemblyQualifiedName
等信息,具体取决于具体要求。
为什么 GetHashCode
returns 相同类型的值不同。如果我执行此代码:
Console.WriteLine(typeof(Guid).GetHashCode());
在不同的应用程序中,我得到不同的哈希码。
如果我在不同的应用程序中多次执行以下语句:
Console.WriteLine("ABC".GetHashCode());
我总是得到相同的哈希码。但为什么 System.Type
的哈希码会发生变化,而 System.String
的哈希码却不会?
谢谢。
System.String
和 System.Type
都不能保证将持久哈希码作为其合约的一部分。在您的特定情况下它恰好与 System.String
一起使用这一事实是一个无法依赖的实现细节。如果您需要保留或导出字符串的散列,请使用不同的字符串散列方法。保留或导出有关类型的信息可能应该使用 FullName
、AssemblyQualifiedName
等信息,具体取决于具体要求。