处理后调用MemoryStream.ToArray()是否危险?

时间:2010-10-20 18:50:49

标签: c# stream

在下面的代码中,GC是否有可能清除MemoryStream以使ToArray失败,因为它不在using语句中?

private static byte[] getBytes()
{
    MemoryStream ms = null;

    using (ms = new MemoryStream())
    {
        // ...
    }

    return ms.ToArray();
}

1 个答案:

答案 0 :(得分:21)

不,没有机会。这样做是安全的 - MemoryStream保持对字节数组的强引用。

我会看看能不能找到任何有关担保的文件......

编辑:排序......

来自MemoryStream.Close

  

流关闭后,MemoryStream上的缓冲区仍然可用。

不可否认,Dispose并不能保证这一点,但记录在案Stream.Close

MemoryStream.Dispose(bool) 可以然后被覆盖以释放数组,但根据我的经验,这并不是一个突破性的变化。