Wednesday, September 9, 2009

Destructor and finalize

In C# you can never call destructors, the reason is one cannot destroy an object. GC destroys the objects only when necessary. Some situations of necessity are memory is exhausted or user explicitly calls System.GC.Collect() method.
Points to remember:
1. Destructors are invoked automatically and cannot be invoked explicitly.
2. Destructors cannot be overloaded. Thus a class can have, at most, one destructor.
3. Destructors are not inherited. Thus a class has no destructors other than the one which may be declared in it.
4. Destructors cannot be used with structs. They are only used with classes.
5. An instance becomes eligible for destruction when it is no longer possible for any code to use the instance.
6. Execution of the destructor for the instance may occur at any time after the instance becomes eligible for destruction.
7. When an instance is destructed, the destructors in its inheritance chain are called in order from most derived to least derived.

No comments: