Using语句中的MemoryStream - 我是否需要调用close()

AJM*_*AJM 35 c# memorystream using using-statement

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

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

      ms.Close(); 
    }
Run Code Online (Sandbox Code Playgroud)

slo*_*oth 58

不,这不对.

using确保Dispose()将被调用,然后调用该Close()方法.

您可以假设using语句将关闭所有类型的Streams .

来自MSDN:

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

  • 我意识到这是旧的,但我想补充一点,除了`using`之外还使用`.Close()`也会导致代码分析警告"CA2202:不要多次丢弃对象".有关更多信息,请阅读此处的"原因"部分:http://msdn.microsoft.com/query/dev12.query?appId = Dev12IDEF1&l = EN-US&k = k(CA2202); k(TargetFrameworkMoniker-.NETFramework,Version% 3Dv4.0) (3认同)

Dar*_*rov 7

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

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

using (MemoryStream ms = new MemoryStream(byteArray)) 
{  
    // stuff 
}
Run Code Online (Sandbox Code Playgroud)

  • @HenkHolterman实际上`Dispose()`调用`Close()`然后调用`Dispose(true)`. (3认同)