宣言と初期化のこれら2つの方法に違いはありますか?
Dim con as New OracleConnection(connstr)
con=Nothing
Dim con as OracleConnection
con=New OracleConnection(connstr)
con=Nothing
更新: Dim con as OracleConnection = New OracleConnection(connstr)
と同等ですか?
宣言と初期化のこれら2つの方法に違いはありますか?
Dim con as New OracleConnection(connstr)
con=Nothing
Dim con as OracleConnection
con=New OracleConnection(connstr)
con=Nothing
更新: Dim con as OracleConnection = New OracleConnection(connstr)
と同等ですか?
違いはありません。ただし、宣言を単純化することはできます
Using con As New OracleConnection(connstr)
' other codes here
End Using
このUsingステートメントは、使用後にオブジェクトを自動的に破棄します。
更新 1
これは、NEWキーワードのためにメモリを直接割り当てます。
Dim con as New OracleConnection(connstr) ' declaration and allocating in the memory
con = Nothing ' disposes the object
NEWこれは、キーワードが提供されるまでメモリを割り当てません。
Dim con as OracleConnection ' declaration only
con = New OracleConnection(connstr) ' allocates memory
con = Nothing ' disposes the object
VBDim foo As New barはシンタックス シュガーであり、次の省略形です。
Dim foo As Bar
foo = New Bar()
この意味で、 VB の C# のキーワードと同等ですvar(コンパイラの型推論がない場合を除く)。
var foo = new Bar();
Nothingローカル変数は、スコープ外になると自動的に破棄/ファイナライズされるため、使用後に VBに設定する必要はありません。先制的に変数を に設定するNothingのは VBScript の慣用的な習慣であり、COM オブジェクトを無効にして参照カウントを減らして破棄する必要がありましたが、VB.NET でそれを行う必要はありません。