internal
修飾子とpublic
コンストラクターを使用してクラスを宣言する C# コードを見てきました。
internal class SomeClass
{
public SomeClass()
{
}
}
クラス全体の可視性が内部である場合、パブリック コンストラクターを使用するポイントは何ですか。したがって、定義アセンブリ内でのみ表示されます。
また、 SomeClassがネストされたクラスの場合、これは意味がありますか?
internal
修飾子とpublic
コンストラクターを使用してクラスを宣言する C# コードを見てきました。
internal class SomeClass
{
public SomeClass()
{
}
}
クラス全体の可視性が内部である場合、パブリック コンストラクターを使用するポイントは何ですか。したがって、定義アセンブリ内でのみ表示されます。
また、 SomeClassがネストされたクラスの場合、これは意味がありますか?
スコープはコンストラクターのスコープをinternal class
オーバーライドし、public MyClass()
コンストラクターを作成しinternal
ます。
コンストラクターで使用public
すると、後でクラスを簡単に更新できますが、public
意図が混乱します。私はしません。
編集 3: 質問の一部を見逃しました。クラスがネストされている場合は、それでも問題ありません。入れ子は、パブリック クラス内のプライベート クラスに入れ子になっている場合でも、違いはありません。
EDIT:そして、私が思い出すと、ctorinternal
がおよびバインドされていない型)。where T : new()
public
編集 2:上記を示すコード サンプル
class Program
{
internal class InternalClass {
internal InternalClass() { }
}
internal class InternalClassPublicCtor {
public InternalClassPublicCtor() { }
}
internal class GenericClass<T>
where T : new() {}
static void Main(string[] args) {
GenericClass<InternalClass> doesNotCompile = new GenericClass<InternalClass>();
GenericClass<InternalClassPublicCtor> doesCompile = new GenericClass<InternalClassPublicCtor>();
}
}
MSDNから- アクセス修飾子 (C# プログラミング ガイド) :
通常、メンバーのアクセシビリティは、それを含む型のアクセシビリティよりも高くありません。ただし、メンバーがインターフェイス メソッドを実装するか、パブリック基本クラスで定義されている仮想メソッドをオーバーライドする場合、内部クラスのパブリック メンバーは、アセンブリの外部からアクセスできる可能性があります。
したがって、たとえば、パブリック インターフェイスの内部実装がある場合でも、特定のメンバーをパブリックとして公開できます。
さらに、突然内部クラスを public にしたいとします。すべてのメンバーよりも、クラスのアクセス修飾子を変更する方がはるかに簡単です。