Please, some clarifications on C# IDisposable
<p>I have seen the code below a lot of times in different threads and different forums. This one in particular I picked up from <a href="http://stackoverflow.com/questions/780834/how-does-gc-and-idispose-work-in-c">How does GC and IDispose work in C#?</a>.</p>

<pre><code>class MyClass : IDisposable
{
    ...

    ~MyClass()
    { 
        this.Dispose(false);
    }

    public void Dispose()
    {
        this.Dispose(true);
       GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        if (disposing)
        { /* dispose managed stuff also */ }

        /* but dispose unmanaged stuff always */
    }
}
</code></pre>

<p>My questions are:</p>

<ol>
<li><p>Is it necessary to create an explicit destructor? The class inherits from IDisposable and during GC cleanup Dispose() will be eventually executed.</p></li>
<li><p>What is the significance of the parameter 'disposing' in Dispose(bool disposing)? Why is it necessary to differentiate between disposing of managed and unmanaged objects? </p></li>
</ol>
