2013-01-11 148 views
4

這是允許的:爲什麼我不能有自動實現的只讀屬性

Public Property Text() As String 

而對於爲什麼沒有我的允許相當於只讀屬性?

Public ReadOnly Property Text() As String 

我似乎被迫使用:

Public ReadOnly Property Text() As String 
    Get 
     Return fText 
    End Get 
End Property 
+2

爲了進行比較,在C#你可以使用'public string Text {get; private set;}',它只能讀取其他類型,並且可以在當前類型中讀寫。 –

+0

@MarcGravell從技術上講,這不是一個只讀屬性,它是一個私人二傳手。與Eg相反。一個屬性只是一個getter和一個readonly後臺字段。從例如優化器的觀點不同 –

+1

@RuneFS哦,我很清楚這一點;但是我的陳述表明:它以其它類型*操作*爲只讀(沒有公共setter)。 –

回答

4

它現在支持VB14(Visual Studio的2015年及以後)。自動實現的屬性可以用初始化表達式進行初始化:

Public ReadOnly Property Text1 As String = "SomeText" 
Public ReadOnly Property Text2 As String = InitializeMyText() 

或在構造函數中:

Public ReadOnly Property Text As String 

Public Sub New(text As String) 
    Me.Text = text 
End Sub 

詳情:

相關問題