プライベート クラスの場合、プロパティをパブリックまたはフレンド (C# の内部) として宣言する必要がありますか? My Private Class は、親クラス以外の他のクラスからはアクセスできません。
2 に答える
一般に、カプセル化をそのまま維持するようにしてください。クラス間の関係は、「知る必要」に基づいている必要があります。
私はあなたのアプリケーション設計に精通していないので、単純化しすぎていると思いますが、次の質問を自問します。
親クラスは、サブクラスを知る必要がある唯一のクラスですか? もしそうなら、それはあるべきです
private
。そうでない場合、サブクラスが同じプロジェクトにあることを知る必要がある他のすべてのエンティティはありますか? もしそうなら、それはあるべきです
internal
。サブクラスについて知る必要があるプロジェクトの外部にエンティティがある場合、それは
public
.
プロパティについて。サブクラスを持つことにした場合private
、プロパティを作成しても意味がありませんpublic
。
クラスのインスタンスを持つことができる唯一のオブジェクトは、同じプロジェクトにある親クラスであるinternal
ため、プロパティには十分なはずです。
注C# には修飾子
がありません。friend
その代わりにinternal
、または 最も似ているが洗練されていないオプションを使用できます: InternalsVisibleTo
あなたのクラス(ネストされたもの)はprivate
、それにアクセスできる唯一の人であるため、そのコンテナ(基本または親クラス)です。この場合public
、or internal
( Friend
VB では) は違いはありません。ネストされたクラスにアクセスできるのはその親だけだからです。一般に、いつかアクセス修飾子を に変更したい場合は、public
今それを予測して と のいずれかを選択することinternal
をお勧めしますpublic
。ネストされたクラスのメンバーを、それが定義されているアセンブリ内でのみ表示する場合は、単純です。internal
それ以外の場合は、使用を検討してpublic
ください。