Net 属性-公共获取,私有集

我想我会问... 但是有没有一种方法可以让 Get 属性的一部分作为公共属性可用,但是保持该集作为私有属性?

否则,我认为我需要两个属性或一个属性和一个方法,只是认为这将是干净的。

133787 次浏览

是的,非常直接:

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
    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 2010特性,但是如果你同时使用这两个特性,你不需要为 setter/mutator 代码块声明 价值参数:

Private _name As String


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

如果您正在使用 VS2010或更高版本,它甚至比这更容易

Public Property Name as String

您可以完全免费获得私有属性和 Get/Set!

看看这篇博文: 斯科特 · 古的博客

我发现标记的 propertyreadonly比上述答案干净。我相信 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

我不确定 VisualStudio 的最低要求版本是什么,但是在 VS2015中您可以使用

Public ReadOnly Property Name As String

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