Finalize

29/04/2010 - 14:31 von ChristianH | Report spam
Hi,

wir habe eine Diskussion.

Objekt A referenziert Objekt B welches IDisposable implementiert.

Im Destrukturo von Objekt A wird Dispose von Objekt B aufgerufen.
~A()
{
B.Dispose();
}

Nun wird behauptet, dass es "nicht sauber" ist im Destruktor von A auf B
zuzugreifen, weil es unsicher ist, dass B noch existiert.

Diese Behauptung kann ich nicht ganz nachvollziehen. Meiner Meinung nach,
kann Objekt B nicht vor Objekt A zerstört werden, da eine Referenz von A auf
B besteht.

Viele Grüße
Christian
 

Lesen sie die antworten

#1 Stefan Hoffmann
29/04/2010 - 14:56 | Warnen spam
hallo Christian,

On 29.04.2010 14:31, ChristianH wrote:
Objekt A referenziert Objekt B welches IDisposable implementiert.
Im Destrukturo von Objekt A wird Dispose von Objekt B aufgerufen.


Warum? Dafür gibt es keinen Grund.

Wenn überhaupt, gehört für Klasse A ebenfalls IDisposable implementiert
und dort sollte B freigegeben werden.

Ansonsten gib B immer nach der Nutzung frei, z.B. mittels using:

using (B b = new B())
{
B.foo();
}

B wird hier automatisch beim verlassen freigegeben.

http://msdn.microsoft.com/en-us/lib...98w02.aspx


mfG

Ähnliche fragen