3

クラスをシール済みとしてマークすることで得られる実際の利点がいくつかあるようです。

  1. 場合によってはパフォーマンス
  2. 他の特殊なケースでのコンパイル時の型の安全性シールされたクラスの明示的な変換が失敗する
  3. クラスの意図しない継承の防止

そして、不利な点は比較的少ないようです...コードを壊さずにクラスをアンシールできますが、コードを壊さずにアンシールされたクラスを後でシールすることはできません。

クラスを継承するつもりがない限り、クラスを常にシール済みとしてマークするのがベスト プラクティスですか? なぜですか、そうでないのですか?

このトピックに関するその他のコメントやガイダンスはありますか?

4

1 に答える 1

1

Sealedクラスを使用する主な利点の1 つperformanceは、 . JIT コンパイラは、メソッドを非仮想的に呼び出すことで、より効率的なコードを生成できます。ただし、パフォーマンスの向上は、使用するアルゴリズムに依存すると主張できます。

クラスシールを作成すると、それを継承してそのメンバーをオーバーライドすることができなくなり、実行のための制御された環境が作成されます。ただし一方で、オーバーライドするように設計されていないクラスのメンバーをオーバーライドすると、予期しない結果が生じる可能性があります

クラスはデフォルトで封印されるべきですが、多くのコンパイラは封印されていないため、明示的にマークする必要があります

参照

封印されたキーワードのとりとめのない

Sealed キーワードを使用する理由

于 2013-10-28T04:45:33.473 に答える