Vb.net声明和初始化

时间:2012-07-30 03:19:09

标签: vb.net

这两种声明和初始化方式有什么区别吗?

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 个答案:

答案 0 :(得分:1)

他们没有分歧。但您仍然可以简化声明

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

Using语句在使用后自动处理对象。

SEE also here

更新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中这样做。