我该打给哪一个?
是否有必要同时调用这两个函数?
如果我已经调用了它们中的一个,另一个会抛出异常吗?
发布于 2018-12-14 21:55:22
以上都不是。您不需要调用Close或Dispose。
MemoryStream不持有任何非托管资源,因此唯一要回收的资源是内存。当您的代码不再引用MemoryStream时,内存将在垃圾回收期间与MemoryStream对象的其余部分一起回收。
如果您有一个对MemoryStream的长期引用,则可以将该引用设置为null,以允许对MemoryStream进行垃圾收集。Close和Dispose既不释放steam缓冲区,也不释放MemoryStream对象。
由于Stream和MemoryStream都没有终结器,因此不需要调用Close或Dispose来调用GC.SuppressFinalize来优化垃圾收集。没有要取消的终结器。
MemoryStream的文档是这样说的:
此类型实现
IDisposable接口,但实际上没有任何资源可供处理。这意味着不需要通过直接调用Dispose()或使用语言结构(如using(在C#中)或Using(在Visual Basic中))来处理它。
发布于 2010-11-25 15:52:45
您可以使用using块来实现这一点。当超出其作用域时,它将自动调用Dispose。
示例:
using (MemoryStream ms = new MemoryStream())
{
// Do something with ms..
}
// ms is disposed here希望这能帮上忙。
发布于 2010-11-25 15:29:32
使用using块,以便在对象实现IDisposable接口时将其释放
https://stackoverflow.com/questions/4274590
复制相似问题