Discussion:
C# und zirkuläre Referenzen
(zu alt für eine Antwort)
Sebastian Lange
2008-05-07 19:12:01 UTC
Permalink
Hallo,

Ich hab eine Frage und zwar wie ist das wenn eine Klasse Childs hat
die wiederum eine Referenz auf Ihren Erzeuger besitzen. In VB6 damals
war das ein Problem da eine Objekt solange gelebt hat wie es Referenzen
darauf gab. In C++ hatte ich das Problem nicht, da hab ich das Root-Object
zerstört und im Destructor die Childs. Kann ich in .NET nu schlecht... Muss
ich mir da keine Gedanken machen bei .NET bzgl. dieser Problematik?

Viele Grüsse&Danke
Sebastian
Gottfried Lesigang
2008-05-07 22:27:25 UTC
Permalink
Hi Sebastian!
Post by Sebastian Lange
Ich hab eine Frage und zwar wie ist das wenn eine Klasse Childs hat
die wiederum eine Referenz auf Ihren Erzeuger besitzen. In VB6 damals
war das ein Problem da eine Objekt solange gelebt hat wie es Referenzen
darauf gab. In C++ hatte ich das Problem nicht, da hab ich das Root-Object
zerstört und im Destructor die Childs. Kann ich in .NET nu schlecht... Muss
ich mir da keine Gedanken machen bei .NET bzgl. dieser Problematik?
Nein, der GC verwaltet das intelligent. Er prüft ob es Referenzen gibt, die
vom Programm noch erreicht werden können. Du weißt halt nicht, wann genau
eine Instanz aufgelöst wird. Das kann beim Aufräumen von externen
Komponenten ein Problem sein. Dazu ggf.: IDisposable in Verbindung mit
"using{}"

Wenn dich dieses Thema interessiert, solltest du vielleicht auch einen
Blick auf WeakReferences werfen. Die können in manchen Szenarien (z.B.
zentraler Cache) sehr hilfreich sein.

HTH
Gottfried
--
Home: www.develes.net
Mail: ***@develes.net
Sebastian Lange
2008-05-08 19:40:08 UTC
Permalink
Hallo Gottfried.

Dankeschön!!!
Post by Gottfried Lesigang
Hi Sebastian!
Post by Sebastian Lange
Ich hab eine Frage und zwar wie ist das wenn eine Klasse Childs hat
die wiederum eine Referenz auf Ihren Erzeuger besitzen. In VB6 damals
war das ein Problem da eine Objekt solange gelebt hat wie es Referenzen
darauf gab. In C++ hatte ich das Problem nicht, da hab ich das Root-Object
zerstört und im Destructor die Childs. Kann ich in .NET nu schlecht... Muss
ich mir da keine Gedanken machen bei .NET bzgl. dieser Problematik?
Nein, der GC verwaltet das intelligent. Er prüft ob es Referenzen gibt, die
vom Programm noch erreicht werden können. Du weißt halt nicht, wann genau
eine Instanz aufgelöst wird. Das kann beim Aufräumen von externen
Komponenten ein Problem sein. Dazu ggf.: IDisposable in Verbindung mit
"using{}"
Wenn dich dieses Thema interessiert, solltest du vielleicht auch einen
Blick auf WeakReferences werfen. Die können in manchen Szenarien (z.B.
zentraler Cache) sehr hilfreich sein.
HTH
Gottfried
--
Home: www.develes.net
Loading...