중첩 형식(C# 프로그래밍 가이드)
클래스 또는 구조체 내에서 선언된 형식을 중첩 형식이라고 합니다. 예를 들면 다음과 같습니다.
class Container
{
class Nested
{
Nested() { }
}
}
중첩 형식은 외부 형식이 클래스인지 구조체인지 여부에 관계없이 기본적으로 private로 설정되지만 public, protected internal, protected, internal 또는 private로 설정할 수도 있습니다. 이전 예제의 경우 Nested는 외부 형식에서 액세스할 수 없지만 다음과 같이 public으로 설정할 수 있습니다.
class Container
{
public class Nested
{
Nested() { }
}
}
중첩 형식(내부 형식)은 이 형식을 포함하고 있는 형식(외부 형식)에 액세스할 수 있습니다. 외부 형식에 액세스하려면 외부 형식을 중첩 형식에 생성자로 전달합니다. 예를 들면 다음과 같습니다.
public class Container
{
public class Nested
{
private Container parent;
public Nested()
{
}
public Nested(Container parent)
{
this.parent = parent;
}
}
}
중첩 형식은 이 형식을 포함하는 형식에 액세스할 수 있는 모든 멤버에 액세스할 수 있습니다. 또한 상속 및 보호된 멤버를 포함하여 외부 형식의 개인 및 보호된 멤버에 액세스할 수 있습니다.
위 선언에서 Nested 클래스의 전체 이름은 Container.Nested입니다. 이 이름은 다음과 같이 중첩된 클래스의 새 인스턴스를 만드는 데 사용됩니다.
Container.Nested nest = new Container.Nested();