VB.Net属性 – 公共获取,私人设置

我想我会问…但是有没有办法让获取属性公开的一部分,但保持私人?

否则,我想我需要两个属性或一个属性和一个方法,只是认为这将是更清洁。

是的,非常简单:

 Private _name As String Public Property Name() As String Get Return _name End Get Private Set(ByVal value As String) _name = value End Set End Property 

我不确定Visual Studio的最低版本是什么,但在VS2015中可以使用

 Public ReadOnly Property Name As String 

它是只读的公开访问,但可以私人修改使用_Name

  Public Property Name() As String Get Return _name End Get Private Set(ByVal value As String) _name = value End Set End Property 

值得一提的一个额外的调整:我不知道这是一个.NET 4.0或Visual Studio 2010function,但如果你使用两个,你不需要声明setter / mutator代码块的参数:

 Private _name As String Public Property Name() As String Get Return _name End Get Private Set _name = value End Set End Property 

我发现标记property只是比上面的答案更清洁。 我相信vb14是必需的。

 Private _Name As String Public ReadOnly Property Name() As String Get Return _Name End Get End Property 

这可以浓缩到

 Public ReadOnly Property Name As String 

https://msdn.microsoft.com/en-us/library/dd293589.aspx?f=255&MSPPError=-2147217396

如果您使用的是VS2010或更高版本,则比这更容易

 Public Property Name as String 

你得到的私人财产和获取/设置完全免费的!

看到这个博客文章: 斯科特顾的博客