2012-07-30 235 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中执行它。