Declarar uma classe como um membro em si

Eu estava trabalhando na dll Microsoft.Ink recentemente usando C # e estava depurando um problema (que não está relacionado a isso). Notei que, quando eu estava depurando, os objetos de tinta tinham um objeto de traços, que tinha um objeto de tinta, que teve .... etc.

Isso me confundiu, pois eu estava sob a suposição de que você não poderia fazer isso (eu venho de um background em C ++)

Mas eu ignorei, resolvi o problema e segui em frente. Hoje, encontro um problema semelhante ao olhar para uma classe que tinha um membro privado que era da mesma classe que el

public sealed class Factory
{

    private static Factory instance = new Factory();
}

Como isso é possível? Agora posso chamar instance.instance.instance.instance ... etc. Isso, como você pode imaginar, machuca meu cérebro mortal, e tenho certeza de que também não pode ser bom no computador. Como o compilador lida com isso? E quão profunda é a toca do coelho?

questionAnswers(18)

yourAnswerToTheQuestion