C#のinternal
およびprivate
アクセス修飾子の違いは何ですか?
internalはアセンブリスコープです(つまり、同じ.exeまたは.dll内のコードからのみアクセス可能)。
privateはクラススコープのためのものです(すなわち、同じクラスのコードからのみアクセス可能です)。
以下の説明を見つけてください。あなたはより多くの詳細についてこのリンクをチェックすることができます - http://www.dotnetbull.com/2013/10/public-protected-private-internal-access-modifier-in-c.html
非公開: - 非公開メンバーは自分の型(Ownクラス)内でのみアクセス可能です。
Internal: - 内部メンバーは、継承(派生型)またはクラスのインスタンスによってアセンブリ内でのみアクセス可能です。
参照:
internal
メンバーは、宣言されているアセンブリ内のすべてのコードに表示されます。
(そして [InternalsVisibleTo]
属性 を使って参照される他のアセンブリへ)
private
メンバーは、宣言しているクラスからしか見えません。 (ネストしたクラスを含む)
外部(ネストしていない)クラスは、プライベートにするための包含スコープがないため、private
と宣言することはできません。
忘れた質問に答えるために、protected
メンバーはprivate
メンバーに似ていますが、宣言型を継承するすべてのクラスにも表示されます。 (ただし、少なくとも現在のクラスの型の式についてのみ)
Privateメンバーは、クラスの本体または宣言されている構造体内でのみアクセスできます。
内部タイプまたはメンバーは、同じアセンブリ内のファイル内でのみアクセスできます。
private - クラス/スコープ/構造体のカプセル化。
internal - アセンブリ内のカプセル化.
Internalを使用すると、複数のビジネスロジッククラス間で(スレッドセーフのために)Data Access静的クラスを参照しながら、それらを継承して接続プールでそのクラスを継承したり、DALクラスを許可しないようにすることができます。公共レベルでのアクセスを促進する。これはデザインとベストプラクティスにおいて無数の裏付けがあります。
Entity Frameworkはこのタイプのアクセスを有効に利用します。