使用语句,As vs =

时间:2017-05-05 01:42:03

标签: vb.net

使用' As'之间是否存在差异?关键字和' ='运营商在vb.net?

示例:

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

' OR

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

1 个答案:

答案 0 :(得分:1)

如果您有Option Infer On,则无效。如果您有Option Infer Off,则第一个代码段将始终生成Thing类型的变量,而第二个代码段将无法使用Option Strict On进行编译,并生成类型为{{1}的变量与Object

第一个代码段在输入变量时是明确的,因此无论您对Option Strict OffOption Strict采用何种设置,它都将是您指定的类型。第二个代码片段没有明确说明类型,因此必须由编译器隐式确定类型。使用Option Infer,可以从初始化语句中推断出类型Option Infer On。对于Thing,类型将默认为Option Infer Off,并且必须使用后期绑定,Object不允许使用后期绑定。

值得注意的是,您的原始问题并非真正有效,因为实际上并非使用Option Strict OnAs。这样:

=

实际上只是一个简写:

Using aThing As New Thing()

因此,您实际上正在使用Using aThing As Thing = New Thing() ,并且选择是否是否提供=子句。 As需要As子句,除非您还有Option Strict On,并且可以从初始化语句中推断出类型。如果没有初始化语句或该语句的类型与您希望变量的类型不同,则需要Option Infer On子句来告诉编译器它无法推断自身的变量类型。 / p>