asp.net 核心中相同字符串的 GetHashCode 方法 Returns 不同值
GetHashCode method Returns different values for same string in asp.net core
我在应用程序中编写了以下代码。
var salt = "0115ee62e6e5e8ea68db9e2d7e72cec85e810ad9566212ffc2c4b76a17ca0b00";
var hashCode = StringComparer.OrdinalIgnoreCase.GetHashCode(salt ?? string.Empty);
它在 'asp.net core' 和 'standard' 框架中有不同的行为。
框架 4.7:
如果我将在 .net 标准框架中创建的 website/console 应用程序中使用此代码,它总是会给我相同的结果。
hashcode 变量的值始终为“1066337973”。
Asp.net核心:
如果我将在 asp.net 核心网站中使用此代码,那么每次我停止应用程序并重新启动时,哈希码变量都有不同的值。
由于这个问题,我的逻辑在 asp.net 核心应用程序中失败了。
如何解决这个问题?
根据@Pavel Anikhouski
GetHashCode
实现在 .NET Core 中发生了变化,这是预期的行为,请查看这篇文章
Why is string.GetHashCode() different each time I run my program in .NET Core?
String.GetHashCode
相同字符串的哈希码可能因 .NET 实现、.NET 版本和 .NET 平台(例如 32 位和 64 位)而异.NET 的单一版本。在某些情况下,它们甚至可能因应用程序领域而异。这意味着同一程序的两次后续运行可能 return 不同的哈希码。
我在应用程序中编写了以下代码。
var salt = "0115ee62e6e5e8ea68db9e2d7e72cec85e810ad9566212ffc2c4b76a17ca0b00";
var hashCode = StringComparer.OrdinalIgnoreCase.GetHashCode(salt ?? string.Empty);
它在 'asp.net core' 和 'standard' 框架中有不同的行为。
框架 4.7: 如果我将在 .net 标准框架中创建的 website/console 应用程序中使用此代码,它总是会给我相同的结果。 hashcode 变量的值始终为“1066337973”。
Asp.net核心: 如果我将在 asp.net 核心网站中使用此代码,那么每次我停止应用程序并重新启动时,哈希码变量都有不同的值。
由于这个问题,我的逻辑在 asp.net 核心应用程序中失败了。
如何解决这个问题?
根据@Pavel Anikhouski
GetHashCode
实现在 .NET Core 中发生了变化,这是预期的行为,请查看这篇文章
Why is string.GetHashCode() different each time I run my program in .NET Core?
String.GetHashCode
相同字符串的哈希码可能因 .NET 实现、.NET 版本和 .NET 平台(例如 32 位和 64 位)而异.NET 的单一版本。在某些情况下,它们甚至可能因应用程序领域而异。这意味着同一程序的两次后续运行可能 return 不同的哈希码。