42

在 using 语句中使用内存流时,我需要调用 close 吗?例如这里需要 ms.Close() 吗?

  using (MemoryStream ms = new MemoryStream(byteArray)) 
    {  
      // stuff 

      ms.Close(); 
    }
4

2 回答 2

67

不,这不对。

using确保Dispose()将被调用,而后者又调用该Close()方法。

您可以假设所有类型的 Streams 都被该using语句关闭。

来自MSDN

当您使用访问非托管资源的对象(例如 StreamWriter)时,一个好的做法是使用 using 语句创建实例。当使用它的代码完成时,using 语句会自动关闭流并在对象上调用 Dispose

于 2012-08-15T11:13:13.833 回答
8

在 using 语句中使用内存流时,我需要调用 close 吗?

不,你不需要。它将.Dispose()被自动调用的方法调用:

using (MemoryStream ms = new MemoryStream(byteArray)) 
{  
    // stuff 
}
于 2012-08-15T11:13:02.020 回答