VB.Net Properties - Public Get, Private Set - PullRequest
       24

VB.Net Properties - Public Get, Private Set

62 голосов
/ 23 сентября 2009

Я подумал, что хотел бы спросить ... но есть ли способ сделать часть свойства Get доступной как общедоступную, но сохранить ее как частную?

В противном случае я думаю, что мне нужны два свойства или свойство и метод, просто подумал, что это будет чище.

Ответы [ 6 ]

108 голосов
/ 23 сентября 2009

Да, довольно прямо:

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
19 голосов
/ 24 марта 2016

Я не уверен, какая минимальная требуемая версия Visual Studio, но в VS2015 вы можете использовать

Public ReadOnly Property Name As String

Это только для чтения для публичного доступа, но может быть изменено в частном порядке с помощью _Name

7 голосов
/ 23 сентября 2009
    Public Property Name() As String
        Get
            Return _name
        End Get
        Private Set(ByVal value As String)
            _name = value
        End Set
   End Property
6 голосов
/ 17 апреля 2012

Еще один трюк, о котором стоит упомянуть: я не уверен, что это функция .NET 4.0 или Visual Studio 2010, но если вы используете оба варианта, вам не нужно объявлять параметр value для блока сеттера / мутатора кода:

Private _name As String

Public Property Name() As String
    Get
        Return _name
    End Get
    Private Set
        _name = value
    End Set
End Property
4 голосов
/ 07 декабря 2015

Я считаю маркировку property как readonly чище, чем приведенные выше ответы. Я считаю, что 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

0 голосов
/ 17 июня 2014

Если вы используете VS2010 или новее, это даже проще, чем

Public Property Name as String

Вы получаете частную собственность и получаете / устанавливаете совершенно бесплатно!

см. Этот пост в блоге: Блог Скотта Гу

...