The using
block will call Dispose()
on the StreamReader
instance. Generally speaking, if a type is IDisposable
, you should put it in using
scope.
EDIT:
If you look at the Close()
implementation of StreamReader
using Reflector, you will see that it's calling Dispose(true)
. So if you're not using the using
scope, calling Close()
manually would be the same as calling Dispose()
in this particular case.
protected override void Dispose(bool disposing)
{
try
{
if ((this.Closable && disposing) && (this.stream != null))
{
this.stream.Close();
}
}
finally
{
if (this.Closable && (this.stream != null))
{
this.stream = null;
this.encoding = null;
this.decoder = null;
this.byteBuffer = null;
this.charBuffer = null;
this.charPos = 0;
this.charLen = 0;
base.Dispose(disposing);
}
}
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…