当我关闭一个使用的表单时Show(),通过使用Dispose()而不是Close()?来发生什么?有人可以详细告诉我,Dispose()方法中发生了什么?
Close()和之间的基本区别Dispose()是,当Close()调用方法时,任何受管资源都可以暂时关闭,并且可以再次打开.这意味着,使用相同的对象可以重新打开或使用资源.其中,Dispose()方法从内存中永久删除任何资源((un)托管)以进行清理,并且资源不再存在以进行任何进一步处理.
或者只是一般性陈述.使用连接对象调用Close()将释放连接回池中.调用Dispose()将调用Close()然后将连接字符串设置为null.
某些对象(如Stream实现)IDisposable但Dispose方法仅在将对象强制转换为IDisposable第一个时才可用.它确实暴露了一种Close()方法.
我总是争辩说,当你完成对象时,你应该调用Dispose()任何实现IDisposable的对象.即使它什么都不做.无论如何,jit编译器将从最终代码中优化它.如果对象包含Close()但没有Dispose()调用Close().
您还可以在IDispoable对象上使用using语句
using(SqlConnection con = new SqlConnection())
{
//code...
}
Run Code Online (Sandbox Code Playgroud)
这将Dispose()在退出块时调用SqlConnection.
| 归档时间: |
|
| 查看次数: |
7591 次 |
| 最近记录: |