0

宣言と初期化のこれら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)

と同等ですか?

4

2 に答える 2

1

違いはありません。ただし、宣言を単純化することはできます

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 
于 2012-07-30T03:21:50.007 に答える
1

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 でそれを行う必要はありません。

于 2012-07-30T03:32:12.453 に答える