クローズドクラス階層(.NET 11 プレビュー探訪 – 第4回)
.NET 11 プレビュー4で導入された「クローズドクラス階層」機能について解説。この機能により、継承を特定のサブクラスに制限でき、より安全で予測可能な型階層の設計が可能になる。C#のパターンマッチングやswitch式と組み合わせることで、網羅性チェックが強化される点など、開発者にとって有用な新機能を詳しく紹介している。
背景メモ
- .NET 11 プレビュー 4 で試験的に導入された「クローズドクラス階層」機能の解説。特定の継承ツリーを sealed(継承禁止)にできる。
- C# は従来、クラスに sealed キーワードを付けて個別に継承を禁じる方法しかなかったが、今回の提案では「このクラスから派生した全サブクラスはこれだけ」と宣言的に閉じた階層を定義できる。
- ユースケースは主にドメイン駆動設計(DDD)の「値オブジェクト」や、代数的データ型の表現。パターンマッチと組み合わせて、未処理のケースがないことをコンパイラに保証させられる。
- このアイデアは F# の discriminated unions に近いが、C# では完全な union type ではなく既存のクラス階層を制限する形を取っている。
- 筆者の Andrew Lock は .NET / ASP.NET Core 分野で著名なブロガー。シリーズ記事の第4回として、破壊的変更ではなく新機能のプレビューを扱っている。