VB.Net Свойства-Public Get, Private Set


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

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

6 59

6 ответов:

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

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 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

Я считаю, маркировка 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

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

Public Property Name as String

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

смотрите это сообщение в блоге:блог Скотта ГУ