액세스 가능 도메인(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 선언된 액세스 가능성