使用IDisposable而不是在C#类终结器中执行操作的优点

时间:2012-03-25 20:27:39

标签: c# .net

有很多问题讨论“图案化”是实现和使用IDisposable / Dispose,但它有什么优势比在C#class finilizer中拥有所有清理代码?

当然,其他类可以在类实例被垃圾收集并调用finilizer之前显式调用Dispose。它是唯一的吗?

2 个答案:

答案 0 :(得分:5)

您无法保证何时或甚至会调用Finalizer(析构函数)。

因此,为了及时清理资源(文件,Db连接),Dispose模式至关重要。

答案 1 :(得分:1)

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

使用IDisposable,您可以告知您的班级用户他们应该使用-the方法。 例如:

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