[解決済み] どんな時に、どんな理由で、授業を封印するのか?
2022-11-09 07:07:08
質問
C# と C++/CLI では、キーワード
sealed
(または
NotInheritable
は、クラスを継承の機会から保護するために使用されます(クラスは非継承になります)。オブジェクト指向の特徴のひとつに継承があることは知っていますが、そのために
sealed
の使用はこの特徴に反しており、継承を停止させてしまいます。
この
sealed
の利点と、それを使うことが重要である場合を示す例はありますか?
どのように解決するのですか?
-
セキュリティ機能を実装したクラスで、元のオブジェクトが "impersonated"できないようにします。
-
より一般的には、私は最近 Microsoft の担当者とやり取りをしましたが、その担当者は、継承を放置するとパフォーマンス的に高くつくので、本当に完全に意味のある場所に限定するようにしていると話していました。
sealed キーワードは、CLR に対して、メソッドを探すためにさらに下のクラスが存在しないことを伝え、物事を高速化します。
現在市販されているほとんどのパフォーマンス向上ツールでは、継承されていないすべてのクラスを密封するチェックボックスを見つけることができます。
しかし、MEF を通してプラグインまたはアセンブリの検出を許可したい場合、問題にぶつかるので、注意してください。
関連
-
[解決済み】5.7.57 SMTP - MAIL FROMエラー時に匿名メールを送信するためにクライアントが認証されない
-
[解決済み] [Solved] .NETでスレッドの終了を待つには?
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み] なぜゲッターとセッター/アクセッサーを使うのですか?
-
[解決済み] EqualsメソッドがオーバーライドされたときにGetHashCodeをオーバーライドすることが重要な理由は何ですか?
-
[解決済み] インターフェースと抽象クラス(一般的なOO)
-
[解決済み] async」と「await」の使い方とタイミング
-
[解決済み] C++でクラスと構造体はいつ使い分けるべきか?
-
[解決済み] JavaScriptでクラスを定義するために使用できるテクニックと、そのトレードオフとは?
-
[解決済み】なぜFunc<T>ではなくExpression<Func<T>を使うのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】ソケットのアドレス(プロトコル/ネットワークアドレス/ポート)は、通常1つしか使用できない?
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み] [Solved] 不正な文字列値: '\xEFxBFxBD' for column
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。