Hi Gustavo

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

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 cents.

Jason


-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Gustavo Garc�a Bernardo
Sent: Thursday, March 04, 2004 10:24 AM
To: [EMAIL PROTECTED]
Subject: [Mono-list] Accessing member objects in destructors

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

Socket socket = new Socket();
~XXXX
{
        socket.Close ();
}

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

Thx, best regards.

G.

_______________________________________________
Mono-list maillist  -  [EMAIL PROTECTED]
http://lists.ximian.com/mailman/listinfo/mono-list
_______________________________________________
Mono-list maillist  -  [EMAIL PROTECTED]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to