다음을 통해 공유


액세스 가능 도메인(C# 참조)

업데이트: 2007년 11월

멤버의 액세스 가능 도메인은 프로그램 섹션에서 멤버가 참조될 수 있는 범위를 지정합니다. 멤버가 다른 형식 내에 중첩되어 있을 경우, 이 멤버의 액세스 가능 도메인은 멤버의 액세스 가능성 수준 및 직접 포함하는 형식의 액세스 가능 도메인에 의해 결정됩니다.

최상위 형식의 액세스 가능 도메인은 적어도 이를 선언한 프로젝트의 프로그램 텍스트입니다. 즉, 이 도메인에는 이 프로젝트의 모든 소스 파일이 포함됩니다. 중첩 형식의 액세스 가능 도메인은 가장 작을 경우 해당 중첩 형식이 선언된 형식의 프로그램 텍스트가 됩니다. 즉, 이 도메인은 모든 중첩 형식을 포함하는 형식 본문입니다. 중첩 형식의 액세스 가능 도메인은 포함하는 형식의 액세스 가능 도메인을 벗어날 수 없습니다. 이러한 개념은 다음 예제에 설명되어 있습니다.

예제

이 예제에는 최상위 형식인 T1과 두 개의 중첩 클래스 M1 및 M2가 있습니다. 각 클래스는 서로 다른 액세스 가능성이 선언된 필드를 포함하고 있습니다. Main 메서드에서 각 문 뒤에 붙은 주석은 각 멤버의 액세스 가능 도메인을 나타냅니다. 액세스할 수 없는 멤버를 참조하려는 문은 주석으로 처리되어 있습니다. 액세스할 수 없는 멤버를 참조하려고 할 때 발생하는 컴파일러 오류를 보려면 주석을 한 번에 하나씩 제거하십시오.

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# 참조