[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로 같다. 하나의 부모 클래스 아래에 두 개의 서로 다른 자식 클래스들이 있는 거다.