用途:为 .NET 项目提供按目标框架(TFM)适配的现代 C# 语言特性指导。使用前应先运行 [skill:dotnet-version-detection] 确定 TFM 与 C# 版本。
主要能力与版本对应:net8.0 对应 C# 12(主构造函数、集合表达式、任意类型别名);net9.0 对应 C# 13(params 集合、Lock 类型、分部属性);net10.0 对应 C# 14(field 关键字、扩展块、未绑定泛型的 nameof);net11.0 对应 C# 15 预览(带参数的集合表达式)。
核心特性:记录(record)用于不可变 DTO、值语义与领域建模,支持 with 非破坏性变更;主构造函数(C# 12+)可直接捕获构造参数,但参数是可变捕获而非只读字段,需要不可变时应赋给 readonly 字段,且不适合在构造时做参数校验;集合表达式(C# 12+)用 [...] 统一创建数组、List、Span,支持展开运算符 ..;模式匹配包括 switch 表达式、列表模式、类型与属性模式;required 成员(C# 11+)强制调用方初始化属性;field 关键字(C# 14)在属性访问器中直接访问编译器生成的字段;扩展块(C# 14)按目标类型分组扩展成员;params 集合(C# 13)支持 Span 等类型;Lock 类型(C# 13)替代 object 锁;分部属性(C# 13)配合源生成器;未绑定泛型 nameof(C# 14)。
多目标限制:较新特性在旧 TFM 上可能无法编译,可用 PolySharp 补齐编译器所需类型、Polyfill 补齐运行时 API,或用 #if NET10_0_OR_GREATER 等条件编译。net11.0 特性需 <LangVersion>preview</LangVersion>,不可用于更早 TFM。
适用场景:编写 .NET 服务、DTO、领域模型与集合处理代码时选择符合当前 TFM 的语法。限制:各特性有明确最低版本要求,跨目标框架需额外处理;资料未提供安装命令、收费或平台信息。