C# 13
新特性
2024 年 3 月 25 日 C# 13 正式发布
新的转义序列
你可以使用 \e
作为 ESCAPE
字符 Unicode U+001B
的字符文本转义序列。 以前,你使用的是 \u001b
或 \x1b
。 不建议使用 \x1b
,因为如果 1b
后面的下一个字符是有效的十六进制数字,则那些字符会成为转义序列的一部分。
方法组自然类型
此功能对涉及方法组的重载解析进行了少量优化。 编译器以前的行为是为方法组构造完整的候选方法集。 如果需要自然类型,则自然类型是根据整套候选方法确定的。
新行为是在每个作用域内削减候选方法集,移除那些不适用的候选方法。 通常情况下,这些是具有错误元数的泛型方法,或未被满足的约束。 仅当未找到候选方法时,此过程才会继续前进到下一个外层作用域。 此过程更紧密地遵循重载决策的一般算法。 如果在给定作用域内找到的所有候选方法都不匹配,则该方法组没有自然类型。
隐式索引访问
对象初始值设定项表达式中现在允许隐式“从末尾开始”索引运算符 ^。 例如,你现在可以在对象初始值设定项中初始化数组,如以下代码所示:
c#
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 之前的版本中,不能在对象初始值设定项中使用 ^ 运算符。 你需要从前面开始为元素编制索引。