C# でネストされたクラスを使用するのが適切な場合を知りたいですか? その使用が不当であり、したがって正しくないという事件はありますか?
両方の状況の例を挙げることができればありがとう
C# でネストされたクラスを使用するのが適切な場合を知りたいですか? その使用が不当であり、したがって正しくないという事件はありますか?
両方の状況の例を挙げることができればありがとう
主に親クラス内で使用されるデータの形式をカプセル化する必要がある場合は、ネストされたクラスを使用すると便利です。これは通常、データの目的または形式が親クラスに合わせて作成されているため、ソリューション内での幅広い使用にはあまり適していないためです。
ネストされたクラスの簡単な基本的な紹介を次に示します。
C# にはusing
、クラスを対象とするディレクティブを記述する方法がないため、クラス名を修飾子として記述せずにクラスの静的メンバーにアクセスできます (import static
それが可能な Java の と比較してください)。
そのため、クラスのユーザーにとっては、パブリック クラスを名前空間の直接のメンバーとして作成し、他のパブリック クラス内にネストしない方が便利です。using
そうすれば、ディレクティブを使用してそれらをグローバル名前空間にプルできます。
プライベート クラスの場合は、できればコードの読みやすさを向上させるために、それらを使用する場所の近くに置きます。
ネストされたクラスのユーザーは、以下のようなシナリオに依存します。
1) 2 つのオブジェクト間に特別な関係がある現実世界の状況に合わせてコードを整理する。2) クラスを別のクラス内に隠して、内部クラスが内部で作成されたクラスの外部から使用されないようにする。
A と B という 2 つのクラスがあり、クラス B がクラス A なしでクラス A に依存しているとします。クラス B @ は使用できません。そのシナリオでは、ネストされたクラスを使用できます。
私の知識によると
DataRow クラスは DataTable のネストされたクラスです。つまり、DataTable クラスのオブジェクトを宣言するまで DataRow クラスを作成できません。
私の世界にネストされたクラスの余地があるかどうかはわかりません。それは単に私にとってデザインをぼかすだけです. クラス内の情報を非表示にする必要がある場合、それをメンバー変数に格納してみませんか?
さらに、クラスの代わりにスタブを挿入する機能がなければ、テストはより面倒になります。
私は2つの主な理由を見つけました:
クラスの名前を台無しにすることなくパーソナライズします。
例: Vercas.ExplorerView
、意味を損なうことなくクラスの名前をパーソナライズします。
プライベートクラス。
例:Vercas.ExplorerView.Item
は 内でのみ使用されVercas.ExplorerView
ます。