アクセシビリティ レベル (C# リファレンス)
以下に示したのは、メンバーに適用されるアクセシビリティ レベルの宣言です。public
、protected
、internal
、private
の各アクセス修飾子を使用して指定します。
アクセシビリティの宣言 | 説明 |
---|---|
public |
アクセスは無制限です。 |
protected |
コンテナーであるクラスまたはそこから派生した型にアクセスが限定されます。 |
internal |
アクセスは現在のアセンブリに限定されます。 |
protected internal |
現在のアセンブリ、またはコンテナーであるクラスから派生した型にアクセスが限定されます。 |
private |
コンテナーである型にアクセスが限定されます。 |
private protected |
現在のアセンブリ内の、コンテナーであるクラス、またはコンテナーであるクラスから派生した型にアクセスが制限されます。 |
protected internal
または private protected
の組み合わせを使う場合を除き、1 つのメンバーまたは 1 つの型に指定できるアクセス修飾子は 1 つだけです。
アクセス修飾子を名前空間に適用することはできません。 名前空間には、アクセス制限がありません。
メンバーが宣言されているコンテキストによっては、決まったアクセシビリティしか宣言できない場合があります。 メンバーの宣言にアクセス修飾子が指定されていない場合は、既定のアクセシビリティが使用されます。
トップレベルの型 (他の型に対して入れ子にされていない型) に指定できるアクセシビリティは internal
と public
だけです。 既定では、そのような型に internal
のアクセシビリティが適用されます。
入れ子にされた型 (他の型のメンバーになっている型) には、次の表に示したアクセシビリティを宣言することができます。
コンテナー | メンバーの既定のアクセシビリティ | メンバーに対して宣言できるアクセシビリティ |
---|---|---|
enum |
public |
なし |
class |
private |
public protected internal private protected internal private protected |
interface |
public |
public protected internal private *protected internal private protected |
struct |
private |
public internal private |
* private
アクセシビリティを持つ interface
メンバーには、既定の実装が必要です。
メモ
クラスまたは構造体が record
キーワード修飾子で変更された場合、同じアクセス修飾子が許可されます。
また、record
修飾子を使用すると、クラスと構造体の両方に対して、既定のメンバー アクセシビリティが引き続き private
。
入れ子にされた型のアクセシビリティは、その型のアクセシビリティ ドメインによって決まります。このアクセシビリティ ドメインは、そのメンバーに対して宣言されているアクセシビリティと、そのメンバーの直接のコンテナーである型のアクセシビリティ ドメインの両方によって決定されます。 ただし、入れ子にされた型のアクセシビリティ ドメインが、その型を含んでいる型のアクセシビリティ ドメインを上回ることはできません。
C# 言語仕様
詳細については、「C# 言語の仕様」を参照してください。 言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。
関連項目
.NET