Ich arbeitete in der Microsoft.Ink dll vor kurzem mit C# und debugging ein Problem (was nicht damit zusammenhängt) Ich bemerkte, dass, wenn ich es debuggte, Tinte Objekte a Hüben Objekt, das eine Tinte Objekt hatte, das hatte .... usw.Deklarieren einer Klasse als ein Mitglied von ihr
das verwirrte mich, wie ich unter der Annahme war, Sie dies nicht tun konnte (ich aus einem C++ Hintergrund kommen)
Aber ich ignorierte es, löste das Problem und ging weiter. Heute stoße ich auf ein ähnliches Problem, wenn ich mir eine Klasse anschaue, die ein privates Mitglied hat, das derselben Klasse angehört wie sie.
public sealed class Factory
{
private static Factory instance = new Factory();
}
Wie ist das überhaupt möglich? Ich kann jetzt instance.instance.instance.instance ... etc aufrufen. Wie du dir vorstellen kannst, tut das meinem sterblichen Gehirn weh, und ich bin mir sicher, dass es auch am Computer nicht gut sein kann. Wie geht der Compiler damit um? Und wie tief geht das Kaninchenloch?
In dem Beispielbeispiel "es geht tief in den Kaninchenbau" tief genug, um eine StackOverflowException ausgelöst zu werden ... – Greg
In Ihrem Beispiel würden Sie offensichtlich eine Ausnahme SO erhalten. Ob "Deklaration einer Klasse als Mitglied von sich selbst" sinnvoll ist, ist jedoch keine Frage von Statik versus Instanz. Siehe das Beispiel in meiner Antwort. –