簡體   English   中英

intellisense-VB.NET visual Studio 2013中的自動生成的屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM