csh*_*dev 14 c# idisposable using using-statement
我有一个方法,里面有一个try/catch/finaly块.在try块中,我声明SqlDataReader如下:
SqlDataReader aReader = null;
aReader = aCommand.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)
在finally块中,手动处理的对象是在类级别设置的对象.因此,在该方法的对象,其实现IDisposable,如SqlDataReader上述,他们得到自动处理的?Close()在aReader执行while循环后调用,以获取阅读器的内容(应该是Dispose()调用的内容Close()).如果没有调用Close(),当方法完成或对象超出范围时,是否会自动关闭/处置此对象?
编辑:我知道这个using声明,但有些情况令我感到困惑.
您应该使用一个using {...}块来包装您的IDisposable对象 - 当using块结束时,将调用该Dispose()方法(SqlDataReader传递给该Close()方法).如果你不使用using,当对象超出范围时,对象将不会被自动处理 - 如果有对象终结器,它将取决于垃圾收集时的资源.
using (SqlDataReader aReader = aCommand.ExecuteReader())
{
// ... do stuff
} // aReader.Dispose() called here
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13587 次 |
| 最近记录: |