C# 13 中的新增功能
C# 13 包括以下新增功能。 可以使用最新的 Visual Studio 2022 版本或 .NET 9 预览版 SDK 尝试这些功能。
.NET 9 支持 C# 13。 有关详细信息,请参阅 C# 语言版本控制。
可以通过 .NET 下载页下载最新的 .NET 9 预览版 SDK。 还可以下载 Visual Studio 2022 预览版,其中包括 .NET 9 预览版 SDK。
当新功能在公共预览版中可用时,它们将被添加到“C# 中的新增功能”页。 roslyn 功能状态页的工作集部分跟踪即将推出的功能何时合并到主分支中。
注意
我们有兴趣了解你对这些功能的反馈。 如果发现这些新功能存在问题,请在 dotnet/roslyn 存储库中创建新问题。
新的转义序列
你可以使用 \e
作为 ESCAPE
字符 Unicode U+001B
的字符文本转义序列。 以前,你使用的是 \u001b
或 \x1b
。 不建议使用 \x1b
,因为如果 1b
后面的下一个字符是有效的十六进制数字,则那些字符会成为转义序列的一部分。
方法组自然类型
此功能对涉及方法组的重载解析进行了少量优化。 编译器以前的行为是为方法组构造完整的候选方法集。 如果需要自然类型,则自然类型是根据整套候选方法确定的。
新行为是在每个作用域内削减候选方法集,移除那些不适用的候选方法。 通常情况下,这些是具有错误元数的泛型方法,或未被满足的约束。 仅当未找到候选方法时,此过程才会继续前进到下一个外层作用域。 此过程更紧密地遵循重载决策的一般算法。 如果在给定作用域内找到的所有候选方法都不匹配,则该方法组没有自然类型。
你可以在建议规范中阅读有关更改的详细信息。
隐式索引访问
对象初始值设定项表达式中现在允许隐式“从末尾开始”索引运算符 ^
。 例如,你现在可以在对象初始值设定项中初始化数组,如以下代码所示:
var v = new S()
{
buffer =
{
[^1] = 0,
[^2] = 1,
[^3] = 2,
[^4] = 3,
[^5] = 4,
[^6] = 5,
[^7] = 6,
[^8] = 7,
[^9] = 8,
[^10] = 9
}
};
在 C# 13 之前的版本中,不能在对象初始值设定项中使用 ^
运算符。 你需要从前面开始为元素编制索引。