2012-07-30 157 views
0

這兩種聲明和初始化方式有什麼區別嗎?Vb.net聲明和初始化

Dim con as New OracleConnection(connstr) 
con=Nothing 

Dim con as OracleConnection 
con=New OracleConnection(connstr) 
con=Nothing 

更新: 昏暗爲體質的OracleConnection =新的OracleConnection(connstr)

等價於?

回答

1

他們沒有區別。但你仍然可以簡化報關

Using con As New OracleConnection(connstr) 
    ' other codes here 
End Using 

它已被用於後Using語句自動銷燬的對象。

SEE also here

UPDATE 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 
+0

所以我可以說第一個是編譯時內存分配而第二個是運行時分配? – zeroin23 2012-08-06 08:16:02

+0

根據選項1下面的答案和選項實際上是否相等? – zeroin23 2012-08-06 08:21:37

+0

作爲一個整體,是的,他們是一樣的。但如果你一行一行地調用它,那就不一樣了。原因是「Dim con as New OracleConnection(connstr)」與'Dim con不同,OracleConnection' – 2012-08-06 08:24:13

1

VB的Dim foo As New bar是語法糖和速記:

Dim foo As Bar 
foo = New Bar() 

這是VB的相當於在這個意義上的C#var關鍵字(除了沒有編譯器類型推斷):

var foo = new Bar(); 

注意在你使用它們後,你不需要在VB中設置局部變量爲Nothing,因爲它們會在它們自動處理/結束後超出範圍。搶先設置變量爲Nothing是VBScript中的一種習慣性習慣,您需要取消COM對象以減少引用計數,以便將它們丟棄,而不需要在VB.NET中執行它。