在处理后调用MemoryStream.ToArray()是危险的吗?

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

private static byte[] getBytes() { MemoryStream ms = null; using (ms = new MemoryStream()) { // ... } return ms.ToArray(); } 

不,那是不可能的。 这样做是安全的 – MemoryStream保持对字节数组的强引用。

我会看看能否找到有关保证的文件……

编辑:排序……

来自MemoryStream.Close

关闭流后,缓冲区仍可在MemoryStream上使用。

不可否认,它不能保证Dispose ,但记录下来调用Stream.Close

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