2017-02-27 84 views
0

爲什麼編譯器抱怨以下行自動實現的只讀屬性必須提供「找」

Public ReadOnly Property Name As String 

錯誤BC30126:「只讀」屬性必須提供「獲取」

我認爲VB 14支持自動實現的只讀屬性?或者我在這裏做錯了嗎?通過使用.NET Framework 4.0.30319與Microsoft(R)Visual Basic編譯器版本14.6.1586提供的vbc.exe從命令行進行編譯?

我需要使用Visual Studio來支持嗎?

編輯:一個具體的例子 - 不應該這樣工作嗎?

Class A 
    Sub New(name As String) 
     Me.Name = name 
    End Sub 
    Public ReadOnly Property Name As String 
End Class 

上面的例子的確應該工作,但並沒有在我的情況。有人能爲此工作,請確認他的Compiler版本與我的有什麼不同?

+2

答案提出的重複中明確指出,代碼這個問題應該與VS 2015一起工作(你可以有一個ReadOnly自動屬性並在構造函數中初始化)。所以這個問題的答案並不包含在擬議的欺騙中。 – Blackwood

回答

1

AutoProperties 必須被初始化。

你必須做這樣的事情:

Public ReadOnly Property Name As String = "Something" 

或跌落AutoProperty:

Public ReadOnly Property Name As String 
    Get 
     Return "FixedName" 
    End Get 
End Property 

或者

Private m_Name as String = "" 
Public ReadOnly Property Name As String 
    Get 
     Return m_Name 
    End Get 
End Property 
+0

我不能初始化構造函數中的屬性嗎? –

+0

嘗試剛剛寫入的代碼後,實際上沒有初始化就得到編譯錯誤,但是該屬性返回Nothing。你的編譯器可能不喜歡它,或者我的VS設置過於鬆懈。 –

+0

只讀autoprops的正常用法是在構造函數中初始化屬性 - 這很好,只要您使用的是適當版本的VB。 –