アクセシビリティ レベル (C# リファレンス)

以下に示したのは、メンバーに適用されるアクセシビリティ レベルの宣言です。publicprotectedinternalprivate の各アクセス修飾子を使用して指定します。

アクセシビリティの宣言 説明
public アクセスは無制限です。
protected コンテナーであるクラスまたはそこから派生した型にアクセスが限定されます。
internal アクセスは現在のアセンブリに限定されます。
protected internal 現在のアセンブリ、または包含クラスから派生した型にアクセスが限定されます。
private コンテナーである型にアクセスが限定されます。
private protected 包含クラス、または包含クラスから派生した型にアクセスが制限されます。

protected internal または private protected の組み合わせを使う場合を除き、1 つのメンバーまたは 1 つの型に指定できるアクセス修飾子は 1 つだけです。

アクセス修飾子を名前空間に適用することはできません。 名前空間には、アクセス制限がありません。

メンバーが宣言されているコンテキストによっては、決まったアクセシビリティしか宣言できない場合があります。 メンバーの宣言にアクセス修飾子が指定されていない場合は、既定のアクセシビリティが使用されます。

トップレベルの型 (他の型に対して入れ子にされていない型) に指定できるアクセシビリティは internalpublic だけです。 既定では、そのような型に internal のアクセシビリティが適用されます。

入れ子にされた型 (他の型のメンバーになっている型) には、次の表に示したアクセシビリティを宣言することができます。

コンテナー メンバーの既定のアクセシビリティ メンバーに対して宣言できるアクセシビリティ
enum public None
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# の構文と使用法に関する信頼性のある情報源です。

関連項目