いつ、なぜクラスを封印するのでしょうか? 質問する

いつ、なぜクラスを封印するのでしょうか? 質問する

C# および C++/CLI では、キーワードsealed(またはNotInheritableVB では) を使用して、クラスを継承の可能性から保護します (クラスは継承不可になります)。オブジェクト指向プログラミングの 1 つの機能が継承であることは知っていますが、 の使用はsealedこの機能に反し、継承を停止すると思います。 の利点sealedと、 を使用することが重要な場合を示す例はありますか?

ベストアンサー1

  1. 元のオブジェクトを「偽装」できないように、セキュリティ機能を実装したクラス。

  2. もっと一般的に言えば、最近 Microsoft の人と話をしたのですが、その人は、継承を本当に意味のある場所に制限しようとしていると言っていました。なぜなら、そのままにしておくとパフォーマンスの面でコストが高くなるからです。sealed
    キーワードは、CLR にメソッドを探すためのクラスがそれ以上存在しないことを伝え、処理を高速化します。

現在市販されているほとんどのパフォーマンス向上ツールには、継承されていないすべてのクラスをシールするチェックボックスがあります。
ただし、MEF を通じてプラグインやアセンブリの検出を許可する場合は問題が発生するので注意してください。

おすすめ記事