[c#] 헷갈리는 nested class의 인스턴스
class ParentClass
{
public ChildClass ChildClass;
public ParentClass()
{
ChildClass = new(this);
}
}
class ChildClass
{
public ParentClass ParentClass;
public ChildClass(ParentClass parentClass)
{
ParentClass = parentClass;
}
}
private void Form1_Load(object sender, EventArgs e)
{
ParentClass parentClass = new();
ChildClass childClass = new(parentClass);
}
위 코드에서 ChildClass의 인스턴스는 두 개 생긴다. parentClass.ChildClass는 ParentClass parentClass = new()로 parentClass가 만들어질 때 parentClass의 컨스트럭터가 생성하고 childClass는 ChildClass childClass = new(parentClass)로 만들어진다.
parentClass.ChildClass와 childClass는 부모 클래스는 parentClass로 같다. 하나의 부모 클래스 아래에 두 개의 서로 다른 자식 클래스들이 있는 거다.