This blog shows the difference between Finalize and Dispose
Finalize :
· Finalize() is called by the runtime
· Is a C# equivalent of destructor, called by Garbage Collector when the object goes out of scope.
· Implement it when you have unmanaged resources in your code, and want to make sure that these resources are freed when the Garbage collection happens.
· Finalize() can NOT be overridden or called in C#.
· Since, Finalize() is called by the Garbage Collector, it is non-deterministic.
Dispose :
· Dispose() is called by the user
· Same purpose as finalize, to free unmanaged resources. However, implement this when you are writing a custom class, that will be used by other users.
· Overriding Dispose() provides a way for user code to free the unmanaged objects in your custom class.
· Dispose() has to be implemented in classes implementing IDispose interface.
· Dispose() method is called explicitly in the code itself.

Join the conversation! Your thoughts help the community grow.