如果我有以下情况:

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?的公认答案

10-08 06:30