Tuesday, October 21, 2008

Dispose VS Finalize

1. Finalize() is the C# equivalent of destructor ~Object() syntax in C#. In VB.Net you implement the Finalize() by overriding it. But, in C# the compiler translates the destructor to a Finalize() method. 

2. Finalize() can NOT be overridden or called in C#. 

3. Since, Finalize() is called by the Garbage Collector, it is non-deterministic. 

4. Dispose() has to be implemented in classes implementing IDispose interface. 

5. Its the right place for freeing-up unmanaged resources like file, handles, and connections etc. 

6. Dispose() method is called explicitly in the code itself. 

7. Dispose() method is automatically called (for objects which implement IDispose), when used in a "using" statement.


Thanks,
Nitin Sharma