Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Public ReadOnly Property Name As String

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

Ответ 3

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

Ответ 4

Один дополнительный вопрос, который стоит упомянуть: я не уверен, что это функция .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

Ответ 5

Я нахожу маркировку 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

Ответ 6

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

Public Property Name as String

Вы получаете частные свойства и Get/Set полностью бесплатно!

см. это сообщение в блоге: Блог Скотта Гука