在阅读大量代码时,我发现实现Connection
的给定IDisposable
对象是在using
语句中手动关闭的。当我看到与MySQL相关的代码时,我看到了这一点。
不需要明确关闭。为什么开发人员会手动关闭它?
using(cnn)
{
//code is here
cnn.close();
}
这是一个好的/有用的措施吗?
答案 0 :(得分:5)
明确关闭using
块是重复,误导和冗余所以对我来说,这是糟糕的事情。
答案 1 :(得分:0)
这取决于连接。许多人在Dispose方法中关闭自己。例如,SQLConnection在Dispose中自行关闭。
答案 2 :(得分:0)
我认为假设实现IDisposable
的对象应该清理自己的资源而不需要关闭是合理的。现在它可能没有尽快关闭,所以你自己手动关闭它们,但是你不会使用using
语法。
答案 3 :(得分:0)
不需要,因为IDbConnection被指定为关闭Dispose()。
(严格地说,它被指定为在Dispose()上释放资源,但这相当于调用close。如果某种数据库连接没有占用任何资源那么它就不必,但那时就不会了无论如何都是一个问题。)
然而,在关闭之前调用close会很有用,因为越早连接对象关闭越好,但是using
可以捕获早期从块中逃脱(无论是异常还是,例如早期返回某些情况)。
作为一项规则,保持使用块的美观和紧密是好的,这会消除优势,但可能有例外。