代码之家  ›  专栏  ›  技术社区  ›  Kenoyer130

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

  •  19
  • Kenoyer130  · 技术社区  · 14 年前

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

    private static byte[] getBytes()
    {
        MemoryStream ms = null;
    
        using (ms = new MemoryStream())
        {
            // ...
        }
    
        return ms.ToArray();
    }
    
    1 回复  |  直到 14 年前
        1
  •  24
  •   Jon Skeet    14 年前

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

    编辑:有点。。。

    MemoryStream.Close :

    记忆流 一旦溪流关闭。

    Dispose ,但有记录可供调用 Stream.Close .

    MemoryStream.Dispose(bool) 然后被重写以释放数组,但在我的经验中不是这样,在这一点上这将是一个突破性的改变。