为什么Stream类实现了IDisposable? 我认为Stream类本身没有任何非托管资源。 当然,某些子类具有非托管资源(例如FileStream),但并非所有子类都具有非托管资源(例如,MemoryStream)。
如果对上述问题的回答是“因为Stream类的子类可能有非托管资源”,那么为什么Object类不实现IDisposable?
答案 0 :(得分:1)
没有人说资源必须不受管理。它有需要清理的资源。您可以使用Close()
完成相同的操作,但我们的想法是您可以将其与using
语句一起使用,然后即使在异常的情况下也可以保证清理资源
using (var s = new System.IO.MemoryStream())
{
//do something.
}