某些 Latin-1 字符的 Unicode 类别已更改

现在,Char 方法为 Latin-1 范围内的字符返回正确的 Unicode 类别。 类别与 Unicode 标准的类别匹配。

更改说明

在以前的 .NET 版本中,Char 方法对 Latin-1 范围内的字符使用 Unicode 类别的固定列表。 但是,自从实现这些 API 以来,Unicode 标准已更改其中某些字符的类别,从而造成了不一致。 此外,遵循 Unicode 标准的 CharCharUnicodeInfo API 之间也存在不一致。 在 .NET 5 及更高版本中,Char 方法使用并返回与所有字符的 Unicode 标准匹配的 Unicode 类别。

下表显示了 .NET 5 中 Unicode 类别已更改的字符:

字符 Unicode 类别
在以前的 .NET 版本中
Unicode 类别
在 .NET 5 及更高版本中
§ (\u00a7) OtherSymbol OtherPunctuation
ª (\u00aa) LowercaseLetter OtherLetter
SHY (\u00ad) DashPunctuation Format
¶ (\u00b6) OtherSymbol OtherPunctuation
º (\u00ba) LowercaseLetter OtherLetter

引入的版本

.NET 5.0

如果你有任何使用 Char 类获取 Unicode 字符类别的代码,并且假定该类别永远不会改变,则可能需要对其进行更新。

更改原因

进行此更改是为了使 Char 类型返回的类别与 Unicode 标准和 CharUnicodeInfo 类型保持一致。

受影响的 API

此外,此更改会影响依赖于 Char 来获取 Unicode 字符类别的任何类,例如 Regex