データベース接続を開くなど、リソースを集中的に使用する操作のベスト プラクティスに関するコンセンサスは、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# にも当てはまります。)