如果我有以下情况:
StreamWriter MySW = null;
try
{
Stream MyStream = new FileStream("asdf.txt");
MySW = new StreamWriter(MyStream);
MySW.Write("blah");
}
finally
{
if (MySW != null)
{
MySW.Flush();
MySW.Close();
MySW.Dispose();
}
}
我是否可以调用
MySW.Dispose()
并跳过Close(即使已提供)?是否有任何Stream隐含无法按预期工作(如CryptoStream)?如果没有,那么下面的代码就是错误的:
using (StreamWriter MySW = new StreamWriter(MyStream))
{
MySW.Write("Blah");
}
最佳答案
是的,这就是它的目的。
可以肯定地假设,如果对象实现IDisposable
,它将正确处理自身。
如果不是,那将是一个错误。
不,该代码是处理实现IDisposable
的对象的推荐方式。
更好的信息是对Close and Dispose - which to call?的公认答案