当与数据库连接对象一起使用时,using语句是否真的调用close方法?MSDN文档说它确保调用Dispose方法,但没有提到close.我看到Stack Overflow上的帖子,人们说它同时做到了.有人在微软或其他有效的证据中以这种或那种方式得到具体答案吗?
Dan*_*boo 19
这是SqlConnection类的"Dispose"方法:
protected override void Dispose(bool disposing)
{
if (disposing)
{
this._userConnectionOptions = null;
this._poolGroup = null;
this.Close();
}
this.DisposeMe(disposing);
base.Dispose(disposing);
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,它确实调用了Close()
如果你使用一个using语句连接将被关闭,那么实现IDisposable的对象在被垃圾收集后仍然保持打开是没有意义的...
但是,Close()和Dispose()不一样的东西:
Dispose()总是Close()隐含地打电话.Dispose()清除ConnectionString,Close()没有.Close()则不应该Dispose()如果你选择使用Dispose()不要直接调用它,using声明它是最好的方法.
| 归档时间: |
|
| 查看次数: |
4130 次 |
| 最近记录: |