【问题标题】:Advantage of using IDisposable over performing actions in C# class finalizer使用 IDisposable 优于在 C# 类终结器中执行操作的优势
【发布时间】:2012-03-25 20:27:38
【问题描述】:

有很多问题讨论“模式化”是实现和使用 IDisposable/Dispose,但与在 C# 类终结器中拥有所有清理代码相比,它有什么优势?

确保其他类可以在类实例被垃圾回收和调用终结器之前显式调用 Dispose。它是唯一的吗?

【问题讨论】:

标签: c# .net


【解决方案1】:

您无法保证何时或什至是否会调用终结器(析构函数)。

所以为了及时清理资源(文件、数据库连接),Dispose 模式是必不可少的。

【讨论】:

    【解决方案2】:

    IDisposable 用于避免析构函数。析构函数的问题是你永远不知道它们什么时候被调用,而带有析构函数的对象总是最后被清理。

    使用 IDisposable 可以通知您的类的用户他们应该使用 using 方法。 例如:

    using(MyClass myClass = new MyClass())
    {
        // Do something with MyClass.
    }
    

    【讨论】:

    • 不要避免拥有析构函数。它避免了实际使用(依赖)它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 2011-03-27
    • 2016-10-26
    • 2020-10-02
    • 2010-09-28
    • 2015-12-08
    相关资源
    最近更新 更多