在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試試這些 –