[英]intellisense - autogenerated properties in VB.NET visual Studio 2013
我正在使用Visual Studio 2013,並嘗試通過僅使用以下代碼來跳過手動實現getter和setter的方法:
Public Class VerifiableText
Public Property verifier() As IVerifier
Public Property text() As String
Function verify() As Boolean
Return verifier.verify(text)
End Function
End Class
到目前為止,這似乎還算不錯,但是我想知道以下行為:
如果我使用初始化我的班級
Dim input = New VerifiableText
如果我輸入“ input”,則intellisense無法識別我的屬性。 然后按Ctrl +空格鍵。
但是,如果我使用
Dim input As VerifiableText
input = New VerifiableText
intellisense正在正確建議我的財產。
這並不是真正的問題,但是我想了解這種行為。
謝謝!
在這種情況下,它可能與Scope
和編譯器選項有更多關系,而不僅僅是屬性樣式。 但是歸結為VS不知道對象的實際類型,以便在Intellisense中提供列表項。
啟用Option Infer
后,VB將推斷局部變量的類型。 因此對於:
Sub SomeSub
Dim v = New VerifiableText
...您尚未聲明類型,但是VB從分配中推斷出它。 如果禁用Option Infer
,則v
是類型Object
,並且VS IDE無法提供Intellisense幫助(此處可能就是這種情況)。 請注意,要對此進行編譯,還必須關閉Option Strict
,否則會得到未聲明Type的錯誤。
如果這是模塊級別的變量,則情況會稍有不同:
Private v = New VerifiableText
Sub SomeSub...
' ...
v
仍為Type Object
因為Option Infer
僅適用於局部變量。 您還會從Option Strict
得到一個錯誤,因為未聲明Type。 解決方案是在聲明中包括Type:
Private v As New VerifiableText ' As... is required for Option Strict
Dim v As New VerifiableText ' As... is optional under Option Infer
在這兩種情況下,您都已為v
聲明了Type,因此現在Intellisense應該可以使用了。 但是,您應該打開Option Strict
,IDE /編譯器將幫助您解決丟失的類型聲明(以及其他問題)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.