To |
Do this |
Write a destructor |
Write a method whose name is the same as the name of the class and is prefixed with a tilde (~). The method must not have an access modifier (such as public) and cannot have any parameters or return a value. For example: class Example
{
~Example()
{
...
}
} |
Call a destructor |
You can't call a destructor. Only the garbage collector can call a destructor. |
Force garbage collection |
Call System.GC.Collect. |
Release a resource at a known point in time |
Write a disposal method (a method that disposes of a resource) and call it explicitly from the program. For example: class TextReader
{
...
public virtual void Close()
{
...
}
}
class Example
{
void Use()
{
TextReader reader = ...;
// use reader
reader.Close();
}
} |
Release a resource at a known point in time in an exception-safe manner |
Release the resource with a using statement. For example: class TextReader : IDisposable
{
...
public virtual void Dispose()
{
// calls Close
}
public virtual void Close()
{
...
}
}
class Example
{
void Use()
{
using (TextReader reader = ...)
{
// use reader
}
}
} |