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