C# 为什么流类实现IDisposable?

C# 为什么流类实现IDisposable?,c#,.net,C#,.net,为什么流类实现IDisposable? 我认为Stream类本身没有任何非托管资源。 当然,有些子类具有非托管资源(例如FileStream),但并非所有子类都具有非托管资源(例如MemoryStream) 如果上述问题的答案是“因为流类的子类可能具有非托管资源”,那么为什么对象类不实现IDisposable?没有人说资源必须是非托管的。它有需要清理的资源。您可以使用Close()完成同样的事情,但其思想是,您可以将它与using语句一起使用,这样即使在出现异常的情况下,也可以保证清理资源 us

为什么流类实现IDisposable? 我认为Stream类本身没有任何非托管资源。 当然,有些子类具有非托管资源(例如FileStream),但并非所有子类都具有非托管资源(例如MemoryStream)


如果上述问题的答案是“因为流类的子类可能具有非托管资源”,那么为什么对象类不实现IDisposable?

没有人说资源必须是非托管的。它有需要清理的资源。您可以使用
Close()
完成同样的事情,但其思想是,您可以将它与
using
语句一起使用,这样即使在出现异常的情况下,也可以保证清理资源

using (var s = new System.IO.MemoryStream())
{
    //do something.
}

很难说,我们可以假设,或假设,或考虑,但除非图书馆平台的人回答,我们不能知道。很可能是因为当您将流对象传递给StreamReader(作为实例),然后稍后处置StreamReader时,流也将被处置。由于大多数实际的流实现在某种程度上与资源相关,我想他们从一开始就非常清楚地表明,这是预期的结果。