这两种声明和初始化方式有什么区别吗?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