【问题标题】:Why does the Stream class implement IDisposable?Stream 类为什么要实现 IDisposable?
【发布时间】:2015-06-21 21:28:12
【问题描述】:

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

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

【问题讨论】:

  • 真的很难说,我们可以假设,或假设,或考虑,但除非图书馆平台的人之一回答,否则我们无法知道。很可能是因为当您将 Stream 对象传递给 StreamReader(作为实例),然后处置 StreamReader 时,Stream 也会被处置。由于大多数实际的 Stream 实现都会以某种方式与资源相关,我猜他们只是从一开始就非常清楚地表明这是预期的。

标签: c# .net


【解决方案1】:

没有人说资源必须不受管理。它有需要清理的资源。您可以使用Close() 完成相同的操作,但想法是您可以将其与using 语句一起使用,然后保证资源被清理,即使出现异常也是如此。

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

【讨论】:

    猜你喜欢
    • 2020-03-23
    • 1970-01-01
    • 2012-07-04
    • 2012-01-19
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    相关资源
    最近更新 更多