使用' As'之间是否存在差异?关键字和' ='运营商在vb.net?
示例:
Using aThing As New Thing()
...
End Using
' OR
Using aThing = New Thing()
...
End Using
答案 0 :(得分:1)
如果您有Option Infer On
,则无效。如果您有Option Infer Off
,则第一个代码段将始终生成Thing
类型的变量,而第二个代码段将无法使用Option Strict On
进行编译,并生成类型为{{1}的变量与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
需要As
子句,除非您还有Option Strict On
,并且可以从初始化语句中推断出类型。如果没有初始化语句或该语句的类型与您希望变量的类型不同,则需要Option Infer On
子句来告诉编译器它无法推断自身的变量类型。 / p>