SuperAPI AI 工具集

dotnet-csharp-type-design-performance

设计与创作

查看项目

更新于 10-16 02:33

技能介绍

用途:在 .NET 8.0+ 项目中,从设计阶段决定类型形态,避免后期性能问题。它关注“一开始就设计对”,而非优化既有代码。

主要能力:提供 struct 与 class 决策矩阵(按大小、生命周期、标识、可变性、继承、可空语义、集合用法判断);建议库类型默认 sealed 以利于 JIT 去虚化与内联;用 readonly struct 消除防御性拷贝;区分 ref struct、Span<T> 与 Memory<T> 的适用场景;集合类型选择,包括 FrozenDictionary、ImmutableArray 等。

必要用法:大小建议为 ≤16 字节理想、17–64 字节可接受、>64 字节优先 class;大型 readonly struct 传参使用 in 修饰符。异步或需存字段时用 Memory<T>,同步热路径用 Span<T>,可用 .Span 转换。启动时构建、只读多次的查找表用 FrozenDictionary(.NET 8+),运行时可变数据用 Dictionary 或 ConcurrentDictionary。

适用场景:库与公共 API 类型设计、DTO 与值对象、配置与静态映射表、高吞吐数据处理。

限制:不涉及运行时优化技巧(池化、缓存、stackalloc)、records 与集合表达式语法、GC 行为与内存管理,这些由其他技能覆盖。Span<T> 不能用于 async 方法;FrozenDictionary 无增删 API,不适合可变数据;抽象类与扩展点不应 sealed;大 struct 需实测。前提为 .NET 8.0+ SDK 与 System.Collections.Frozen、System.Collections.Immutable 命名空间。