c# - Explicit Conversion to IDisposable -
i using xmlreader
, xmlwriter
object needed work on strings inside try...catch
blocks.
i know using notation using (xmlreader newreader = xmlreader.create(...))
prefered syntax, don't appending finally
blocks , executing newreader.close();
, newwriter.close();
.
however, code analysis complaining these objects aren't being disposed, forcing me somehow call dispose()
method.
the problem in these classes dispose()
method implemented explicitly, have use ((idisposable)(newreader)).dispose();
, ((idisposable)(newwriter)).dispose();
.
are there drawbacks technique?
the c# using
statement call dispose
you. roughtly translates following:
xmlreader newreader = xmlreader.create(...); try { // stuff on newreader } { ((idisposable)newreader).dispose(); }
so wrapping in finally
youself doesn't add value. although close
, dispose
equivalent, not case. because of fxcop right, should call dispose
, when (or let using
statement this), there no reason call close
manually.
Comments
Post a Comment