我们什么时候需要在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上的文档,所以我的假设是错误的。