我们什么时候需要在dot net c#中调用Dispose()?
创建后我是否需要处理sqldatareader?
SqlDataReader reader; --- --- --- reader.Close(); reader.Dispose();
经验法则:如果类实现了IDisposable ,则应在使用完该资源后立即调用Dispose方法。 甚至更好地将它包装在using语句中,以确保即使抛出exception也将调用Dispose方法:
using (var reader = conn.ExecuteReader()) { ... }
可以在使用块中最好地使用(如果可能)可以使用Disposable的对象。 在使用块的末尾,对象被自动处理。
由于内存管理,如果您不再需要它们,请务必处理您的对象。
这是从MSDN中读取的一些内容 。
有一个简单的准则:如果你已经完成了一个类型实现IDisposable
的对象,那么就调用它上面的Dispose()
; 你应该使用using
块来做到这一点。
在处理实现IDisposable的任何事情时,建议使用using模式
using () { // use it here }
这将关注try..catch..finally构造并调用Dispose。
编辑我之前说过,我认为Close和Dispose为读者做了同样的事情(流,文件,sqldatareader等),但看起来这不是真的看SQLDataReader上的文档,所以我的假设是错误的。