请考虑以下代码:
1-...
2-{
3-...
4-SqlConnection cn=new SqlConnection();
5-...
6-}
Run Code Online (Sandbox Code Playgroud)
如果程序达到声明No.6将被cn处置?如果不是cn变量发生了什么?
如果程序达到声明No.6将被处置?
没有.
如果不是cn变量发生了什么?
这取决于你之后是否使用它.如果您不使用它并且它超出范围,这意味着它有资格进行垃圾收集.当这个垃圾收集发生时,你无法控制.但是当它发生时,将调用析构函数,它本身会调用该Dispose方法.
这就是说正确的方法是始终将IDisposable资源包装在using语句中.这可确保始终调用Dispose方法,即使抛出异常:
2-{
3-...
4-using (SqlConnection cn=new SqlConnection())
{
...
}
5-...
6-}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |