这两种声明和初始化方式有什么区别吗?
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)
相当于?
答案 0 :(得分: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
答案 1 :(得分: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中这样做。