title: Finalizers with Dispose() in C#
body: <p>See the code sample from MSDN: (<a href="http://msdn.microsoft.com/en-us/library/b1yfkh5e%28v=VS.100%29.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/b1yfkh5e(v=VS.100).aspx</a>)</p>
  
  <pre><code>// Design pattern for a base class.
  public class Base: IDisposable
  {
    private bool disposed = false;
  
    //Implement IDisposable.
    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }
  
    protected virtual void Dispose(bool disposing)
    {
        if (!disposed)
        {
            if (disposing)
            {
                // Free other state (managed objects).
            }
            // Free your own state (unmanaged objects).
            // Set large fields to null.
            disposed = true;
        }
    }
  
    // Use C# destructor syntax for finalization code.
    ~Base()
    {
        // Simply call Dispose(false).
        Dispose (false);
    }
  }
  </code></pre>
  
  <p>In the Dispose() implementation it calls GC.SupressFinalize();, but provide a destructor to finalise the object.</p>
  
  <p>What is the point of providing an implementation for the destructor when GC.SuppressFinalize() is called?</p>
  
  <p>Just little bit confused what the intentions are?</p>