my understanding is that if you have an instance of a class that
has members that occupy resources that you want released after
you are done working with the instance of the class, then you
can have the class implement the IDisposable interface and then
inside the implemented Dispose() method you can perform any
clean up necessary. When such an instance of a class is declared
and initialized inside a "using" block, the runtime
automatically calls the Dispose() method on the instance of the
class after the "using" block goes out of scope. Often, the
Dispose() method will contain a line such as
"GC.SuppressFinalize(this)" which tells the GC not to call the
destructor method (which implicitly calls
System.Object.Finalize()) on the instance of the class after the
instance of the class goes out of scope. I don't understand
exactly what the Finalize() or SupressFinalize methods do. I
mean I understand that if you have reference type variables
pointing toward a null reference then the data in memory that
the referen