1. ホーム
  2. .net

[解決済み] なぜ封印するのか?

2022-11-19 13:43:41

質問

.Netフレームワークでシールドされたクラスが大量に存在する背景にはどのような動機があるのか聞いてみたいです。クラスをシールすることの利点は何ですか? 私は、継承を許可しないことがどのように役に立つのか理解できませんし、おそらくこれらのクラスと戦っているのは私だけではないはずです。

では、なぜフレームワークはこのように設計されているのでしょうか、そして、すべてのシーリングを解除することは破格の変更ではないのでしょうか。単に邪悪であること以外の別の理由があるはずです。

どのように解決するのですか?

  • クラスが貴重すぎて、継承されるように設計されていないことがあります。
  • Runtime/Reflection は、型を探すときに、シールされたクラスについて継承の仮定をすることができます。この素晴らしい例は - 属性は、検索実行時の速度のためにシールされることが推奨されます。MyAttribute がシールされていれば type.GetCustomAttributes(typeof(MyAttribute)) は大幅に速く実行されます。

このトピックに関する MSDN の記事は クラスの密封による拡張性の制限 .