 <p>The <code>using</code> statement is really the preferred solution. It's idiomatic in C#. These classes implement <code>IDisposable</code> explicitly because they already provide a method that has closing semantics: <code>Close</code>. My bet is that <code>Dispose</code> calls <code>Close</code>, or vice-versa. <em>But you shouldn't count on that, and should always call <code>Dispose</code> anyway.</em></p> <p>In the end, all these are equivalent:</p> <ol> <li>Use <code>using</code>, which is preferred;</li> <li><s>Call <code>Close</code> on the <code>finally</code> block, and suppress the static analysis warnings or;</s></li> <li>Call <code>Dispose</code> on the <code>finally</code>: <code>((IDisposable)NewReader).Dispose();</code></li> </ol>