当前位置: 首页 > 知识库问答 >
问题:

方法为内核中的同 asp.net 字符串返回不同的值

皮献
2023-03-14

我在应用程序中编写了以下代码。

  var salt = "0115ee62e6e5e8ea68db9e2d7e72cec85e810ad9566212ffc2c4b76a17ca0b00";
  var hashCode = StringComparer.OrdinalIgnoreCase.GetHashCode(salt ?? string.Empty);

它在“asp.net核心”和“标准”框架中有不同的行为。

框架 4.7:如果我在 .net 标准框架中创建的网站/控制台应用程序中使用此代码,它总是给我相同的结果。哈希码变量的值始终为“1066337973”。

Asp.net核心:如果我将在ASP.NET核心网站使用这段代码,那么每次我停止应用程序并重新启动时,hashcode变量都有不同的值。

由于这个问题,我的逻辑在 asp.net 核心应用程序中失败了。
如何解决这个问题?

共有1个答案

柴霖
2023-03-14

根据@Pavel Anikhouski

GetHashCode实现在.NET Core中发生了更改,这是预期的行为,请看本文“为什么是字符串”。每次在.NET Core中运行程序时GetHashCode()都不同?

相同字符串的字符串 .GetHashCode 同一字符串的哈希代码在 .NET 实现、.NET 版本之间以及单个 .NET 版本的 .NET 平台(如 32 位和 64 位)之间可能不同。在某些情况下,它们甚至可能因应用程序域而异。这意味着同一程序的两次后续运行可能会返回不同的哈希代码。

 类似资料:
  • 在我的应用程序中,有一个计算得到两个日期之间的天数。计算如下所示; 此方法在我的本地pc(windows 7,64位)上返回正确的值(即2015-03-10 00:00:00.0、2015-03-02 00:00:00.0,从存储库中检索的值为8,并传递给该方法)。但是,此方法在位于加拿大的pc(Windows 7,64位)上返回不正确的值(即2015-03-10 00:00:00.0、2015-

  • 编者按:这个问题中的语法早于Rust 1.0,1.0更新的语法会产生不同的错误,但Rust 1.0中的总体概念仍然相同。 我有一个带有字段的结构T,我想从函数返回该字符串。我不想复制整个字符串,只是指针: 为什么这是错误的?返回

  • 我想把一个字符串映射到一个构建特定对象的方法,但不一定要从同一个类为每个字符串映射。环顾四周,一个很好的解决方案是有一张

  • 问题内容: 如果我在MySql中将一列设置为布尔值,则查询返回的值将为或。 是否可以做这样的事情 我的意思是,根据是对还是错,返回两个不同的字符串。 问题答案:

  • 问题内容: 我有两个字符串,它们看起来都一样: 但是,检查相等性表明它们不是。 我还尝试从命令提示符中复制两个字符串,并将它们作为新变量粘贴回去,但是它们仍然不相等。我有80%的把握是因为它们的编码方式很怪异,插入了一些我看不见的奇数字符,但是使用type()都只是显示为字符串。 有什么办法可以看到“真实”字符串?任何帮助表示赞赏。 问题答案: 他们是不一样的; using显示了这两个值之间的差异

  • 我正在尝试实现和重写具有不同返回类型的方法,而不会被迫转换返回类型。 我的问题:是否可以在不强制强制转换的情况下返回不同的类型?解决这个问题的抽象方法看起来怎么样? 我认为必须有一个解决方案,因为编译器应该知道返回类型...