我们什么时候需要在dot net c#中调用Dispose()?

时间:2011-05-05 10:03:48

标签: c# .net dispose

我是否需要在创建sqldatareader后处置它?

SqlDataReader reader;
---
---
---
reader.Close();
reader.Dispose();

4 个答案:

答案 0 :(得分:26)

经验法则:如果某个类实现IDisposable,则应在使用完该资源后立即调用Dispose方法。更好地将它包装在using statement中,以确保即使抛出异常也会调用Dispose方法:

using (var reader = conn.ExecuteReader())
{
    ...
}

答案 1 :(得分:2)

可以在使用块中最好地使用可以使用Disposable的对象(如果可能)。在使用块的末尾,对象被自动处理。

由于内存管理,如果您不再需要它们,请务必处理它们。

Here's some stuff从MSDN中读取。

答案 2 :(得分:1)

建议在处理实现IDisposable的任何内容时使用using模式

using ()
{
    // use it here
}

这将关注try..catch..finally构造并调用Dispose。

编辑我之前曾说过,我认为Close和Dispose为读者做了同样的事情(流,文件,sqldatareader等),但看起来这并不是真的看着SQLDataReader上的文档所以我的假设是错的。

答案 3 :(得分:1)

有一个简单的指导原则:如果您已完成类型实现IDisposable的对象,则在其上调用Dispose();您应该使用using块来执行此操作。