[解決済み] なぜ封印するのか?
2022-11-19 13:43:41
質問
.Netフレームワークでシールドされたクラスが大量に存在する背景にはどのような動機があるのか聞いてみたいです。クラスをシールすることの利点は何ですか? 私は、継承を許可しないことがどのように役に立つのか理解できませんし、おそらくこれらのクラスと戦っているのは私だけではないはずです。
では、なぜフレームワークはこのように設計されているのでしょうか、そして、すべてのシーリングを解除することは破格の変更ではないのでしょうか。単に邪悪であること以外の別の理由があるはずです。
どのように解決するのですか?
- クラスが貴重すぎて、継承されるように設計されていないことがあります。
- Runtime/Reflection は、型を探すときに、シールされたクラスについて継承の仮定をすることができます。この素晴らしい例は - 属性は、検索実行時の速度のためにシールされることが推奨されます。MyAttribute がシールされていれば type.GetCustomAttributes(typeof(MyAttribute)) は大幅に速く実行されます。
このトピックに関する MSDN の記事は クラスの密封による拡張性の制限 .
関連
-
[解決済み] CLSID {XXXX} を持つコンポーネントの COM クラスファクトリの取得は、次のエラーにより失敗しました: 80040154。
-
[解決済み] WinSCP 応答待ちタイムアウト
-
[解決済み] B "の印刷が "#"の印刷より劇的に遅いのはなぜですか?
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み] 0.1fを0にすると、なぜ10倍もパフォーマンスが落ちるのですか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] C#でHashtableよりDictionaryが好まれる理由とは?
-
[解決済み] なぜPythonのコードは関数の中でより速く実行されるのですか?
-
[解決済み] なぜ[]はlist()よりも速いのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】WCFとは何か、何ができるのか?
-
[解決済み] [Solved] ファイル *.mdf をデータベースとしてアタッチできない
-
[解決済み] Microsoft.Practices.ServiceLocationはどこから来たのですか?
-
[解決済み] COMExceptionエラー80040154を修復する方法は?
-
[解決済み] Html.BeginForm()にCSSクラスを追加する。
-
[解決済み] NetFx45WebLinkとNetFx45RedistLinkの違いは何ですか?
-
[解決済み] asp.netでWebサービスのタイムアウト時間を長くする方法は?
-
[解決済み] DockPanelを空きスペースいっぱいに表示させる方法
-
[解決済み] なぜJavaには演算子のオーバーローディングがないのですか?
-
[解決済み] どんな時に、どんな理由で、授業を封印するのか?