2017-02-27 92 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。 –