Do you know what is the purpose of Finalizer in .NET?!
Its just there to re-claim your unmanaged resources. Basically Garbage Collector does not know how to collect the unmanaged, so we pump code to do ourselves. But we cannot leave the work to Garbage Collector since it is non-deterministic. So we empower(?!) programmers to use Dispose pattern to deterministically and programmatically recollect the memory. But support a Finalizer only if there are unmanaged resources.
Its just there to re-claim your unmanaged resources. Basically Garbage Collector does not know how to collect the unmanaged, so we pump code to do ourselves. But we cannot leave the work to Garbage Collector since it is non-deterministic. So we empower(?!) programmers to use Dispose pattern to deterministically and programmatically recollect the memory. But support a Finalizer only if there are unmanaged resources.