有關資源密集型操作(如開放數據庫連接)最佳實踐的共識似乎是使用Using
塊,因爲Using
塊"guarantees disposal of the resource... even in the case of an unhandled exception."。嵌套使用語句有用嗎?
下面是我發現大部分的描述都是:
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#)
嵌套'Usings'在圖形非常普遍相關的代碼,你可能是'同時使用一個圖形對象,一個畫筆,一些筆和一個位圖。 – Plutonix