title: Why would a class implement IDisposable explicitly instead of implicitly?
body: <p>I was using the <a href="http://msdn.microsoft.com/en-us/library/fhk72sf2.aspx" rel="nofollow noreferrer">FtpWebResponse</a> class and didn't see a Dispose method.  <a href="https://stackoverflow.com/questions/3118861/how-does-this-class-implement-idisposable-if-it-doesnt-have-a-dispose-method">It turns out</a> that the class implements IDisposable, but does so explicitly so that you must first cast your instance to IDisposable before calling Dispose:</p>
  
  <pre><code>// response is an instance of FtpWebResposne
  ((IDisposable) response).Dispose();
  </code></pre>
  
  <p>Why would the designer of a class such as this one choose to implement IDisposable explicitly?  As <a href="https://stackoverflow.com/questions/3118861/how-does-this-class-implement-idisposable-if-it-doesnt-have-a-dispose-method/3118890#3118890">Anthony Pegram says</a>, doing things this way masks the fact that the object should be disposed for the average developer who is not consulting the documentation every time he/she uses a class.</p>