Declarando una clase como miembro de sí misma
Estaba trabajando en Microsoft.Ink dll recientemente usando C # y estaba depurando un problema (que no está relacionado con esto). Me di cuenta de que cuando lo estaba depurando, los objetos de tinta tenían un objeto de trazos, que tenía un objeto de tinta, que tenía .... etc.
Esto me confundió, ya que suponía que no podría hacer esto (vengo de un fondo C ++)
Pero lo ignoré, resolví el problema y seguí adelante. Hoy, me encuentro con un problema similar, al mirar una clase que tenía un miembro privado que era la misma clase que él mismo.
public sealed class Factory
{
private static Factory instance = new Factory();
}
¿Cómo es eso posible? Ahora puedo llamar a instancia.instancia.instancia.instancia ... etc. Esto, como puedes imaginar, lastima mi cerebro mortal, y estoy seguro de que tampoco puede ser bueno en la computadora. ¿Cómo lidia el compilador con esto? ¿Y qué tan profundo llega la madriguera del conejo?