使用 语句, As vs =



在vb.net 中使用"As"关键字和"="运算符有区别吗?

例:

Using aThing As New Thing()
...
End Using
' OR
Using aThing = New Thing()
...
End Using

如果您有Option Infer On,则不会有有效的区别。 如果您有Option Infer Off则第一个代码段将始终生成Thing类型的变量,而第二个代码段将无法使用Option Strict On进行编译,并导致带有Option Strict OffObject类型的变量。

第一个代码片段在键入变量时是明确的,因此无论您对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子句来告诉编译器它无法自行推断的变量类型。

最新更新