#428 – A Finalizer Should Always Call the Finalizer of Its Base Class
October 7, 2011 1 Comment
An implementation of Object.Finalize for a particular class in .NET should always call the Finalize method of its base class. In the case of C#, you can’t explicitly override Finalize, but you provide a finalizer using the destructor (~) syntax. When you do this, the compiler will automatically add code to ensure that your destructor calls Finalize in the base class.
In the example below, I write a simple destructor for the Dog class. We can see in the IL that the Finalize method has been overridden and that it calls System.Object.Finalize in the finally clause.
~Dog() { Trace.WriteLine("This dog is on the way out.."); }