[Mono-list] Accessing member objects in destructors

Uppenborn, Jason Jason.Uppenborn@atcoitek.com
Thu, 4 Mar 2004 13:01:32 -0700

Hi Gustavo

Did you mean object destructor or did you really mean a class =

For a *class* destructor, I would say that accessing methods of member =
objects would be correct because, AFAIK, as there isn't any other point =
at which the class is told to release it's resources.

For an *object* destructor, I would say that accessing methods of member =
objects is incorrect: implement IDisposable instead. As I understand it, =
disposal happens as requested or when an object is made available for =
garbage collection, whereas destruction is done whenever the garbage =
collector decides to get around to it. When destruction happens, you =
have no guarantee that any of your references to member objects are =
still valid.

I'm sure someone will correct me if I'm wrong, but for now that's my two =


-----Original Message-----
From: mono-list-admin@lists.ximian.com =
[mailto:mono-list-admin@lists.ximian.com] On Behalf Of Gustavo Garc=EDa =
Sent: Thursday, March 04, 2004 10:24 AM
To: mono-list@ximian.com
Subject: [Mono-list] Accessing member objects in destructors

Reading the Mono code i have seen sometimes a class destructor access a
method of a member object:

Socket socket =3D new Socket();
	socket.Close ();

Is this correct? You can assert the socket object is not freed before =

Thx, best regards.


Mono-list maillist  -  Mono-list@lists.ximian.com