.NET 11 中的封闭类层次结构
本文探讨了 .NET 11 预览版 4 中引入的封闭类层次结构(closed class hierarchies)新特性。该特性允许开发者通过将类标记为封闭,限制其继承范围,从而在框架层面提供更严格的类型层次控制。文章详细介绍了该特性的设计动机、使用方式及其在性能优化和 API 设计中的潜在价值。
背景速读
- .NET 是微软开发的开源跨平台开发框架,常用于构建桌面、Web、云和移动应用。.NET 11 是最新预览版,仍在开发中。
- "Closed class hierarchies"(封闭类层级)是一项提议中的语言/运行时特性,让开发者能限制某个类或接口只能被已知的一组子类/实现所继承。这比传统的 "sealed"(完全禁止继承)更灵活。
- 文中提到 "discriminated unions"(可区分的联合类型)——一种类型安全地表示"这个值可以是 A、B 或 C 之一"的方式,类似其他语言(如 TypeScript 或 Rust)的 union/enum 模式。封闭层级是向 C# 引入可区分联合的前提步骤。
- 这项讨论的背景是 C# 团队常在每个 .NET 主版本中引入大型语言特性(例如 .NET 9 的记录类型、.NET 10 的部分泛型约束)。
- 该特性仍处于早期设计阶段,可能在 .NET 11 正式发布前变化或取消。