[解決済み] .netでネストされたクラスを使うべき理由/タイミングは?それとも、使うべきではないのでしょうか?
2023-02-01 13:57:52
質問
で Kathleen Dollard の2008年のブログ記事 で、彼女は .net でネストされたクラスを使用する興味深い理由を提示しています。しかし、彼女は FxCop がネストされたクラスを好まないことにも触れています。FxCop のルールを書いている人たちはバカではないと思うので、その立場の背後にある理由があるはずですが、私はそれを見つけることができませんでした。
どのように解決するのですか?
入れ子にするクラスが、囲むクラスにとってのみ有用である場合に、入れ子クラスを使用します。例えば、ネストしたクラスを使うと、(簡略化)みたいな書き方ができるようになります。
public class SortedMap {
private class TreeNode {
TreeNode left;
TreeNode right;
}
}
クラスの完全な定義を一箇所で行うことができ、クラスがどのように動作するかを定義するためにPIMPLの輪をくぐる必要がなく、外の世界はあなたの実装を何も見る必要がありません。
もしTreeNodeクラスが外部のものであれば、すべてのフィールドを
public
にするか、あるいは大量の
get/set
メソッドをたくさん作る必要があります。外の世界では、別のクラスが彼らのインテリセンスを汚染することになります。
関連
-
[解決済み] asp.netでWebサービスのタイムアウト時間を長くする方法は?
-
[解決済み] どのような場合に '$this' よりも 'self' を使うべきですか?
-
[解決済み] Pythonのクラスはなぜオブジェクトを継承するのですか?
-
[解決済み] async」と「await」の使い方とタイミング
-
[解決済み] C++でクラスと構造体はいつ使い分けるべきか?
-
[解決済み] LINQで.Firstと.FirstOrDefaultを使用するタイミングは?
-
[解決済み] C#では、文字列の初期化にはstring.EmptyとString.Emptyと""のどちらを使えばいいのでしょうか?
-
[解決済み] MemoryStreamから文字列を取得する方法は?
-
[解決済み] Visual Studioの「Any CPU」ターゲットはどういう意味ですか?
-
[解決済み】C++でネストされたクラスを使用するのはなぜですか?
最新
-
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とは何か、何ができるのか?
-
[解決済み] msiexec を使用せずにコマンドラインから MSI ファイルをアンインストールする
-
[解決済み] app.configのマッピングがないアセンブリのapp.configの再マッピングを考慮する。
-
[解決済み] データテーブルの並べ替え
-
[解決済み] VB.NETでプログラムパスを取得する?
-
[解決済み] WCF エラーの解決。このサービスのメタデータパブリッシングは現在無効になっています。
-
[解決済み] 16進数値0x00は無効な文字です。
-
[解決済み] AndroidでWCFサービスを利用する方法
-
[解決済み] このコンピュータには、.NET Framework 4.6またはそれ以降の更新プログラムがすでにインストールされています。
-
[解決済み] Entity FrameworkとLINQ to SQLの比較