Tim*_*m A 2 c# .net-core .net-4.8 .net-6.0
我们目前正在将应用程序从 .Net Framework 4.8 更新到 .NET 6,有一件特别的事情让我感到困惑:
"MyString".StartsWith("\x01");
Run Code Online (Sandbox Code Playgroud)
在 .Net Framework 中,这将返回 false。正如我所期望的,因为字符串的第一个字符不是'\x01'
但在 .Net 6 中(也已经有 .Net 5),这个评估结果为 true?我们找不到任何关于为什么这种行为发生变化的解释,您知道我们可以参考什么资源吗?
我们发现,这可以通过使用新的重载来解决StartsWith(char),而不是使用字符串参数的(旧的?)重载。
升级路径不会自动替换这些路径,因此我预计行为也会相同。
这是因为 .NET 从使用 NLS 更改为 ICU,并且默认情况下对 .NET 执行区域性感知比较StartsWith(string)。.NET 运行时存储库中的更改有一些背景知识。
考虑使用序数比较:
"MyString".StartsWith("\x01", StringComparison.Ordinal);
Run Code Online (Sandbox Code Playgroud)
这将达到您的预期。
| 归档时间: |
|
| 查看次数: |
107 次 |
| 最近记录: |