The following code behaves differently between .NET 4.8 and .NET 6.0 with 4.8 behaving as I'd expect (see also Why is "ss" equal to the German sharp-s character 'ß'?)

Thread.CurrentThread.CurrentCulture = new CultureInfo("de-de");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("de-de");
var eq = "ß".Equals("SS", StringComparison.CurrentCultureIgnoreCase); 
// True in .NET 4.8 
// False in .NET 6.0

推荐答案

因为他们started using ICU in .NET 5 and later:

这导致少数人出现了一些行为差异 在不同平台上运行应用程序时的全球化API

关于差异here的更多信息.

您可以通过将以下内容添加到项目文件中来恢复旧NLS库来证明这就是导致更改的原因:

<ItemGroup>
  <RuntimeHostConfigurationOption Include="System.Globalization.UseNls" Value="true" />
</ItemGroup>

添加该内容并重新编译后,.NET 5或更高版本的比较将返回true,而不是false.

Csharp相关问答推荐

编写DataAnnotations自定义验证器的多种方法

. NET在上一个操作完成之前,在此上下文实例上启动了第二个操作

实现List T,为什么LINQ之后它不会返回MyList?<>(无法强制转换WhereListIterator `1类型的对象)'

如何注销Microsoft帐户?

. net依赖注入如何避免服务类中的新

从Blob存储中提取tar.gz文件并将提取结果上载到另一个Blob存储

Azure Redis缓存与Entra ID身份验证

使用带有WithAppOnly()请求选项的pageIterator

JSON空引用异常仅在调试器中忽略try-Catch块,但在其他上下文中捕获得很好

带有列表参数的表达式树

如何在不复制或使用输出的情况下定义项目依赖

WinUI 3中DoubleCollection崩溃应用程序类型的依赖属性

用C#从XML内部元素中获取特定值

将FileStream的特定部分作为字节数组读取

Blazor Server/.NET 8/在初始加载时调用异步代码是否冻结屏幕,直到第一次异步调用完成?

如何从原始图像到新创建的图像获得相同的特定 colored颜色 ,并且具有相同的 colored颜色 量和相同的宽度和高度?

如何更改Datagridview行标题

嵌套Blazor组件内的验证

Avalonia MVVM数据模板

为什么我不能在固定语句中使用外部函数?