A C# destructor is really just an override of the System.Object Finalize method, and so is virtual by definition.