用途:该技能用于指导现代 C# 开发,基于 .NET 8+,强调可空引用类型启用、异步优先、用 record 表达数据。适用于编写或审查 C# 代码、配置 async/await 与 ConfigureAwait 等场景。
主要能力:
- 异步模式:I/O 一律使用 async/await,并传递 CancellationToken;库代码中使用 ConfigureAwait(false);禁止阻塞异步(.Result、.Wait());禁止在事件处理器之外使用 async void。
- 可空引用类型:项目级启用,并将警告视为错误,配置为 <Nullable>enable</Nullable> 与 <TreatWarningsAsErrors>true</TreatWarningsAsErrors>;显式表达可空性,如 Task<User?> 与 Task<User>,并用 is not null、?.、?? 处理空值。
- record 与不可变:DTO 与值类型使用 record,如 public record CreateOrderRequest(...);领域实体用 record class 配合 init 与 with 表达式;小于 16 字节的值类型用 readonly record struct;不暴露可变集合,使用 IReadOnlyList<T>。
- 模式匹配:优先使用 switch 表达式而非 if-else 链或 switch 语句,支持类型、属性与嵌套模式。
- 项目配置:通过 Directory.Build.props 设置 TargetFramework 为 net8.0、LangVersion 为 12.0、启用可空、警告即错误、NET 分析器与最新推荐分析级别。
使用方式:作为编码规范参考,在编写或审查 C# 代码时对照上述规则;配置项目时按给出的属性组设置。
限制与反模式:避免阻塞异步、库中缺少 ConfigureAwait(false)、无正当理由使用 null!、带公共 setter 的可变 DTO、使用 switch 语句而非表达式、遗留 .csproj 或 packages.config。资料未提供安装命令、收费或平台信息。