這兩種聲明和初始化方式有什麼區別嗎?Vb.net聲明和初始化
Dim con as New OracleConnection(connstr)
con=Nothing
Dim con as OracleConnection
con=New OracleConnection(connstr)
con=Nothing
更新: 昏暗爲體質的OracleConnection =新的OracleConnection(connstr)
等價於?
這兩種聲明和初始化方式有什麼區別嗎?Vb.net聲明和初始化
Dim con as New OracleConnection(connstr)
con=Nothing
Dim con as OracleConnection
con=New OracleConnection(connstr)
con=Nothing
更新: 昏暗爲體質的OracleConnection =新的OracleConnection(connstr)
等價於?
他們沒有區別。但你仍然可以簡化報關
Using con As New OracleConnection(connstr)
' other codes here
End Using
它已被用於後Using
語句自動銷燬的對象。
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
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中執行它。
所以我可以說第一個是編譯時內存分配而第二個是運行時分配? – zeroin23 2012-08-06 08:16:02
根據選項1下面的答案和選項實際上是否相等? – zeroin23 2012-08-06 08:21:37
作爲一個整體,是的,他們是一樣的。但如果你一行一行地調用它,那就不一樣了。原因是「Dim con as New OracleConnection(connstr)」與'Dim con不同,OracleConnection' – 2012-08-06 08:24:13