经过很多Idisposable的文章后,我对它的用法感到困惑.所有文章都解释了它是什么以及如何实现.如果我们没有,我想了解我们会想念的内容.它是一个接口,其中包含一个方法Dispose().让我们举一个例子通常使用dispose显示为处理数据库连接.
代码就像
public class Test : IDisposable
{
public Test()
{
DatabaseConnection databaseConnection = new DatabaseConnection();
}
public void Dispose()
{
if (this.databaseConnection != null)
{
this.databaseConnection.Dispose();
this.databaseConnection = null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
尽管配置已实现但是在dispose方法中,databaseconnection的dispose属性用于释放连接(this.databaseConnection.Dispose();)
我的问题是为什么在这种情况下我们需要实现IDisposable? 我们可以直接调用this.databaseConnection.Dispose()并释放连接.为什么在内部实现dispose也调用对象的dispose属性.作为Idisposable方法的替代方案,我们可以实现释放方法以释放内存.
public class Test
{
public Test()
{
DatabaseConnection databaseConnection = new DatabaseConnection();
}
public void Release()
{
if (this.databaseConnection != null)
{
this.databaseConnection.Dispose();
this.databaseConnection = null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这两种方法有什么不同?我们真的需要Idisposable吗?我期待着一个具体的解释.