在vb.net中使用'As'关键字和'='运算符有区别吗?使用语句,As vs =
例子:
Using aThing As New Thing()
...
End Using
' OR
Using aThing = New Thing()
...
End Using
在vb.net中使用'As'关键字和'='运算符有区别吗?使用语句,As vs =
例子:
Using aThing As New Thing()
...
End Using
' OR
Using aThing = New Thing()
...
End Using
将不会有有效的区别,如果你有Option Infer On
。如果您有Option Infer Off
,则第一个代码段将始终生成Thing
类型的变量,而第二个代码段将无法与Option Strict On
一起编译,并导致类型为Object
的变量与Option Strict Off
。
第一个代码片段在其变量输入中是明确的,因此它将是您指定的类型,而不管您对Option Strict
和Option 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
子句来告知编译器无法为其自身推断的变量的类型。
https://msdn.microsoft.com/en-us/library/865x40k4.aspx试试这些 –