在处理诸如打开数据库连接之类的资源密集型操作时,使用Using
块被认为是最佳实践。由于Using
块“即使发生未处理的异常也保证资源的释放”。
以下是我找到的大多数示例的写法:
Sub ExecuteCommand(ByVal sql As String, ByVal connectionString As String)
Using connection As New SqlConnection(connectionString)
Dim command As New SqlCommand(sql, connection)
command.Connection.Open()
command.ExecuteNonQuery()
End Using
End Sub
但是嵌套的 Using
块是允许的,我偶尔(但很少)看到上面的代码被写成:
Sub ExecuteCommand(ByVal sql As String, ByVal connectionString As String)
Using connection As New SqlConnection(connectionString)
Using command As New SqlCommand(sql, connection)
command.Connection.Open()
command.ExecuteNonQuery()
End Using
End Using
End Sub
我的问题是:多个嵌套的
Using
块有什么好处吗?还是单个 Using 块已经保证了其包含的所有资源会被处理?(注意:我的代码是用VB.NET编写的,但同样的问题也适用于C#。)