我是否需要在创建sqldatareader后处置它?
SqlDataReader reader;
---
---
---
reader.Close();
reader.Dispose();
答案 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
块来执行此操作。