次の方法で共有


アクセシビリティ ドメイン (C# リファレンス)

更新 : 2007 年 11 月

メンバのアクセシビリティ ドメインは、プログラムのセクション内で、メンバを参照できる場所を指定します。メンバが他の型の入れ子になっている場合、そのメンバのアクセシビリティ ドメインは、メンバのアクセシビリティ レベルと、それを含む型のアクセシビリティ ドメインによって決定されます。

トップレベルの型のアクセシビリティ ドメインは、少なくとも、その型が宣言されているプログラムのプログラム テキストです。つまり、ドメインには、このプロジェクトのすべてのソース ファイルが含まれていることになります。入れ子にされた型のアクセシビリティ ドメインは、少なくとも、入れ子にされた型が宣言されている型のプログラム テキストです。つまり、ドメインは、入れ子にされたすべての型を含む、型の本体です。入れ子にされた型のアクセシビリティ ドメインは、含んでいる側の型のアクセシビリティ ドメインの外には決して出ません。これらの概念を次の例で説明します。

使用例

この例には、トップ レベルの型 T1 と、2 つの入れ子にされたクラス M1 および M2 があります。クラスには、異なる種類の宣言されたアクセシビリティを持つフィールドがあります。Main メソッドでは、各ステートメントに続くコメントが、各メンバのアクセシビリティ ドメインを示しています。アクセス不可のメンバを参照しようとするステートメントがコメントになっている点に注意してください。アクセス不可のメンバを参照したために発生したコンパイラ エラーを見るには、コメントを一度に 1 つずつ解除してください。

namespace AccessibilityDomainNamespace
{
    public class T1
    {
        public static int publicInt;
        internal static int internalInt;
        private static int privateInt = 0; // CS0414

        public class M1
        {
            public static int publicInt;
            internal static int internalInt;
            private static int privateInt = 0; // CS0414
        }

        private class M2
        {
            public static int publicInt = 0;
            internal static int internalInt = 0;
            private static int privateInt = 0; // CS0414
        }
    }

    class MainClass
    {
        static void Main()
        {
            // Access is unlimited:
            T1.publicInt = 1;

            // Accessible only in current assembly:
            T1.internalInt = 2;

            // Error: inaccessible outside T1:
            //    T1.myPrivateInt = 3;  

            // Access is unlimited:
            T1.M1.publicInt = 1;

            // Accessible only in current assembly:
            T1.M1.internalInt = 2;

            // Error: inaccessible outside M1:
            //    T1.M1.myPrivateInt = 3; 

            // Error: inaccessible outside T1:
            //    T1.M2.myPublicInt = 1;

            // Error: inaccessible outside T1:
            //    T1.M2.myInternalInt = 2;

            // Error: inaccessible outside M2:
            //    T1.M2.myPrivateInt = 3;
        }
    }
}

C# 言語仕様

詳細については、「C# 言語仕様」の次のセクションを参照してください。

  • 3.5.1 宣言されたアクセシビリティ

  • 3.5.2 アクセシビリティ ドメイン

  • 3.5.4 アクセシビリティの制約

  • 10.3.5 アクセス修飾子

  • 10.3.8.2 宣言されたアクセシビリティ

参照

概念

C# プログラミング ガイド

参照

C# のキーワード

アクセス修飾子 (C# リファレンス)

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

アクセシビリティ レベルの使用に関する制限事項 (C# リファレンス)

アクセス修飾子 (C# プログラミング ガイド)

public (C# リファレンス)

private (C# リファレンス)

protected (C# リファレンス)

internal (C# リファレンス)

その他の技術情報

C# リファレンス