不同文化的默认值 TextInfo.ListSeparator 在所有操作系统上都已更改。
更改描述
在 .NET 5.0.0 中,作为从 NLS 切换到 ICU 库的一部分,不同区域性的默认 TextInfo.ListSeparator 值在 Windows 上已更改。 从 Unicode 国际组件(ICU)获取的小数分隔符值用作 ListSeparator 值。 在 Linux 和 macOS 上,值没有变化 TextInfo.ListSeparator ;也就是说,它们继续使用小数分隔符值。
对于 .NET 5.0.1 及更高版本中的所有操作系统,其TextInfo.ListSeparator值等效于从 NLS 获取的值。 对于 Windows,这意味着这些值相当于 .NET Framework 和 .NET Core 1.0 - 3.1 中的值。 对于 Linux 和 macOS,TextInfo.ListSeparator 的值现在与 Windows 的 TextInfo.ListSeparator 值相匹配。
下表汇总了 TextInfo.ListSeparator 的值更改。
| .NET 框架 .NET Core 1.0 - 3.1 |
.NET 5 | .NET 5.0.1 | |
|---|---|---|---|
| Windows操作系统 | 从 NLS 获取 | ICU 中的十进制分隔符。 可切换回 NLS。 |
等效于 NLS |
| Linux 和 macOS | ICU 中的十进制分隔符 | ICU 中的十进制分隔符 | 等效于 NLS |
已引入的版本
5.0.1
更改原因
开发人员报告,他们在解析逗号分隔值(CSV)文件时使用 TextInfo.ListSeparator 属性,而新 TextInfo.ListSeparator 值会破坏这种解析。
建议的措施
如果代码依赖于以前的小数分隔符值,则可以硬编码所需的 TextInfo.ListSeparator 值。