0

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

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在提供关键字之前, this 不会分配内存。

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 回答