【发布时间】:2010-10-02 11:52:44
【问题描述】:
看了很多关于IDisposable的文章后,我对它的用法感到困惑。所有文章都解释了它是什么以及如何实现它,但我想了解如果我们没有它会错过什么。
这是实现IDisposable 的类的示例。 dispose 的使用通常显示为释放数据库连接。
public class Test : IDisposable
{
public Test()
{
DatabaseConnection databaseConnection = new DatabaseConnection();
}
public void Dispose()
{
if (this.databaseConnection != null)
{
this.databaseConnection.Dispose();
this.databaseConnection = null;
}
}
}
虽然实现了Dispose(),但在Dispose()方法内部,databaseConnection的dispose属性用于释放连接(this.databaseConnection.Dispose();)。
我的问题是为什么在这种情况下我们需要实现IDisposable?我们可以直接调用this.databaseConnection.Dispose()并释放连接。 IDisposable内部也调用对象的Dispose()方法,为什么还要实现呢?
替代IDisposable的方法,我们可以实现一个方法Release()来释放内存。
public class Test
{
public Test()
{
DatabaseConnection databaseConnection = new DatabaseConnection();
}
public void Release()
{
if (this.databaseConnection != null)
{
this.databaseConnection.Dispose();
this.databaseConnection = null;
}
}
}
这两种方法有什么区别?我们真的需要IDisposable吗?我期待一个具体的解释。
【问题讨论】:
-
代码很不对,需要是类的私有成员,而不是构造函数的局部变量。
标签: c# idisposable