「保護」と「保護された内部」の違いは何ですか? 質問する

「保護」と「保護された内部」の違いは何ですか? 質問する

protectedC# のと修飾子の違いを説明していただけますかprotected internal? 動作は同じであるように見えます。

ベストアンサー1

「protected internal」アクセス修飾子は、「protected」修飾子と「internal」修飾子の両方を組み合わせたものです。

MSDN の「アクセス修飾子 (C# プログラミング ガイド)」より:

保護されています:

型またはメンバーには、同じクラスまたは構造体内のコード、またはそのクラスから派生したクラス内のコードからのみアクセスできます。

内部

型またはメンバーには、同じアセンブリ内の任意のコードからアクセスできますが、別のアセンブリからはアクセスできません。

保護された内部:

型またはメンバーは、宣言されているアセンブリ内の任意のコードから、または別のアセンブリ内の派生クラス内からアクセスできます。別のアセンブリからのアクセスは、保護された内部要素が宣言されているクラスから派生したクラス宣言内で行われる必要があり、派生クラス型のインスタンスを介して行われる必要があります。

:はprotected internalprotectedOR internal」(同じアセンブリ内の任意のクラス、または異なるアセンブリ内にある場合でも任意の派生クラス)を意味することに注意してください。

...そして完全を期すために:

プライベート

型またはメンバーには、同じクラスまたは構造体内のコードからのみアクセスできます。

公共

型またはメンバーには、同じアセンブリ内の他のコード、またはそれを参照する別のアセンブリからアクセスできます。

プライベート保護:

アクセスは、現在のアセンブリ内の包含クラスまたは包含クラスから派生した型に制限されます。
( C# 7.2 以降で使用可能)

おすすめ記事