5

次のコードが与えられます:

  Function GetSomething() As Integer
    Using dbConn As New SqlConnection("Connection_String")
      dbConn.Open()
      Using dbCmd As New SqlCommand(" SELECT SOMETHING ....", dbConn)
        Return Integer.Parse(dbCmd.ExecuteScalar())
      End Using
      dbConn.Close()
    End Using
  End Function

Returnは、関数ブロックの残りの部分、つまりデータベース接続の閉じと、Usingブロックの終了時に呼び出される暗黙のDispose()の実行を防ぎますか?

4

1 に答える 1

14

いいえ、UsingステートメントはTry/Finallyステートメントと同等です。したがって、ブロックの最後に到達するか、通常どおりに戻るか、例外を介して、実行がブロックを離れるときに破棄が実行されます。

Closeとにかく接続を破棄しているので、明示的な呼び出しは必要ありません。

于 2013-03-12T11:49:52.633 に答える