2013-01-11 178 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 

详情:

相关问题