protected
C# のと修飾子の違いを説明していただけますかprotected internal
? 動作は同じであるように見えます。
ベストアンサー1
「protected internal」アクセス修飾子は、「protected」修飾子と「internal」修飾子の両方を組み合わせたものです。
MSDN の「アクセス修飾子 (C# プログラミング ガイド)」より:
型またはメンバーには、同じクラスまたは構造体内のコード、またはそのクラスから派生したクラス内のコードからのみアクセスできます。
内部:
型またはメンバーには、同じアセンブリ内の任意のコードからアクセスできますが、別のアセンブリからはアクセスできません。
保護された内部:
型またはメンバーは、宣言されているアセンブリ内の任意のコードから、または別のアセンブリ内の派生クラス内からアクセスできます。別のアセンブリからのアクセスは、保護された内部要素が宣言されているクラスから派生したクラス宣言内で行われる必要があり、派生クラス型のインスタンスを介して行われる必要があります。
:はprotected internal
「protected
OR internal
」(同じアセンブリ内の任意のクラス、または異なるアセンブリ内にある場合でも任意の派生クラス)を意味することに注意してください。
...そして完全を期すために:
型またはメンバーには、同じクラスまたは構造体内のコードからのみアクセスできます。
公共:
型またはメンバーには、同じアセンブリ内の他のコード、またはそれを参照する別のアセンブリからアクセスできます。
アクセスは、現在のアセンブリ内の包含クラスまたは包含クラスから派生した型に制限されます。
( C# 7.2 以降で使用可能)