1

对于 .Net MemoryStream 对象实例,是否需要在使用后显式关闭它?还是不需要关闭?哪些是最佳实践?

我正在使用 VSTS2008 + .Net 3.5 + C#。

4

2 回答 2

9

更好的是使用Using

using (MemoryStream ms = /*get it using your favorite ctor*/)
{
    // use it here

    // and now flush and copy to a file stream (for example)
    ws.Flush();
    byte[] buffer = ws.ToArray();
    using (Stream stream = new FileStream("fileName", FileMode.Create))
        stream.Write(buffer, 0, buffer.Length);
}

一个小提醒——如果你打算在最后把它全部写到另一个流中,不要忘记Flush()(并且不要把马桶座留下)。

我在 ms 周围使用了一个 StreamWriter,将文本数据写入内存,最后一口气将它们全部放入磁盘。(如果您愿意,我也可以将此处的示例更改为这种情况)

于 2009-08-25T04:36:18.113 回答
2

完成后应该关闭它。最佳实践是在 try-catch-finally 块的 finally 部分关闭流。你可以在这里获得更多信息:

http://msdn.microsoft.com/en-us/library/system.io.memorystream.aspx

于 2009-08-25T04:31:36.517 回答