title: In C# what is the difference between a destructor and a Finalize method in a class?
body: <p>What is the difference, if there is one, between a destructor and a Finalize method in a class?</p>
  
  <p>I recently discovered that Visual Studio 2008 considers a destructor synonymous with a Finalize method, meaning that Visual Studio won't let you simultaneously define both methods in a class.</p>
  
  <p>For example, the following code fragment:</p>
  
  <pre><code>class TestFinalize
  {
      ~TestFinalize()
      {
          Finalize();
      }
  
      public bool Finalize()
      {
          return true;
      }
  }
  </code></pre>
  
  <p>Gives the following error on the call to Finalize in the destructor: </p>
  
  <blockquote>
    <p>The call is ambiguous between the following methods or properties:
            'TestFinalize.~TestFinalize()' and 'TestFinalize.Finalize()'</p>
  </blockquote>
  
  <p>And if the call to Finalize is commented out, it gives the following error:</p>
  
  <blockquote>
    <p>Type 'ManagementConcepts.Service.TestFinalize' already defines a member called 
        'Finalize' with the same parameter types</p>
  </blockquote>