- 记录结构和结构上的 with 表达式
(record struct Point(int X, int Y); 和 var newPoint = point with { X = 100 };)
。 - Global using 指令:global using 指令可避免在程序中的许多文件内重复相同的 using 指令。
- 改进的明确赋值:明确的赋值和为 null 性分析可以更好地处理常见模式,例如
dictionary?.TryGetValue(key, out value) == true
。 - 常数内插字符串:由常数组成的内插字符串本身也是常数。
- 扩展的属性模式:属性模式允许访问嵌套成员
(if (e is MethodCallExpression { Method.Name: "MethodName" }))
。 - 密封记录 ToString:记录可以继承具有密封 ToString 的基础记录。
- 增量源生成器:通过分解源生成管道和缓存中间结果,改进大型项目中的源生成体验。
- 混合析构:析构赋值和析构声明可以混合在一起
((existingLocal, var declaredLocal) = expression)
。 - 方法级 AsyncMethodBuilder:用于编译 async 方法的 AsyncMethodBuilder 可以在本地重写。
- line span 指令:允许源生成器(如 Razor)使用指定目标范围的 #line 指令
(#line (startLine, startChar) - (endLine, endChar) charOffset "fileName")
对行映射进行精细控制。 - Lambda 改进:允许对 lambda 使用属性和返回类型;lambda 和方法组具有自然委托类型
(var f = short () => 1;)
。 - 内插字符串处理程序:使用内插字符串处理程序类型,可在赋值和调用中高效设置内插字符串的格式。
- 文件范围的命名空间:具有单个命名空间的文件不需要额外的大括号或缩进
(namespace X.Y.Z;)
。 - 无参数结构构造函数:支持结构类型的无参数构造函数和实例字段初始化表达式。
- CallerArgumentExpression:使用此属性可捕获作为字符串传递给方法的表达式。