2017-05-05 51 views
1

在vb.net中使用'As'关键字和'='运算符有区别吗?使用语句,As vs =

例子:

Using aThing As New Thing() 
    ... 
End Using 

' OR 

Using aThing = New Thing() 
    ... 
End Using 
+0

https://msdn.microsoft.com/en-us/library/865x40k4.aspx试试这些 –

回答

2

将不会有有效的区别,如果你有Option Infer On。如果您有Option Infer Off,则第一个代码段将始终生成Thing类型的变量,而第二个代码段将无法与Option Strict On一起编译,并导致类型为Object的变量与Option Strict Off

第一个代码片段在其变量输入中是明确的,因此它将是您指定的类型,而不管您对Option StrictOption Infer的设置如何。第二个代码片段不是关于类型的明确的,所以这个类型必须由编译器隐式确定。通过Option Infer On,可以从初始化语句推断出Thing类型。使用Option Infer Off时,类型将默认为Object,必须使用后期绑定,而Option Strict On不允许使用后期绑定。

值得注意的是,您的原始问题并非真正有效,因为它实际上不是使用As=的情况。这:

Using aThing As New Thing() 

实际上只是这个简写:

Using aThing As Thing = New Thing() 

所以你实际使用=无论哪种方式,而选择只是是否要提供As条款。 Option Strict On需要As子句,除非您也有Option Infer On,并且可以从初始化语句中推断出该类型。如果没有初始化语句,或者该语句的类型与您希望变量的类型不同,则需要使用As子句来告知编译器无法为其自身推断的变量的类型。