Finalize and Dispose methods are used to destroy the object.
Finalize provides implicit control by implementing the protected finalize method on an object. The garbage collector calls this method at some point after there are no longer any valid references to the object.
Dispose is used to explicitly release resources before garbage collector frees the object. If programmer wants to explicitly release resources, dispose is used.
To provide explicit control , implement Dispose method provided by IDisposable interface.
Dispose can be called even if other references to the object are alive.
Programmer calls the Dispose method while Finalize is invoked by the Garbage Collector.
Note that even when you provide explicit control by way of Dispose , you should provide implicit cleanup using the Finalize method.
Finalize provides a backup to prevent resources from permanently leaking , if programmer fails to dispose.
GC.SupressFinalize(this) : Request the system not to call finalize for the specified instance.
Use Dispose method to close or release unmanaged resources such as files, streams, database connections etc.
Finalize has performance issues.
c# dispose,dispose c#,gc.dispose,c# close vs dispose