在下面的代码中,GC是否有可能清除MemoryStream以使ToArray失败,因为它不在using语句中?
private static byte[] getBytes()
{
MemoryStream ms = null;
using (ms = new MemoryStream())
{
// ...
}
return ms.ToArray();
}
答案 0 :(得分:21)
不,没有机会。这样做是安全的 - MemoryStream
保持对字节数组的强引用。
我会看看能不能找到任何有关担保的文件......
编辑:排序......
流关闭后,
MemoryStream
上的缓冲区仍然可用。
不可否认,Dispose
并不能保证这一点,但记录在案Stream.Close
。
MemoryStream.Dispose(bool)
可以然后被覆盖以释放数组,但根据我的经验,这并不是一个突破性的变化。