web-dev-qa-db-fra.com

Propriétés VB.Net - Public Get, Private Set

Je pensais que je demanderais ... mais existe-t-il un moyen de rendre la partie Get d'une propriété disponible en tant que public, mais de garder l'ensemble comme privé?

Sinon, je pense avoir besoin de deux propriétés ou d'une propriété et d'une méthode, je me suis dit que ce serait plus propre.

63
RiddlerDev

Oui, assez simple:

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

Je ne sais pas quelle est la version minimale requise de Visual Studio, mais dans VS2015, vous pouvez utiliser

Public ReadOnly Property Name As String

Il est en lecture seule pour un accès public mais peut être modifié en privé à l'aide de _Name

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

Un Tweak supplémentaire à noter: je ne sais pas s'il s'agit d'une fonctionnalité .NET 4.0 ou Visual Studio 2010, mais si vous utilisez les deux, vous n'avez pas besoin de déclarer le paramètre valeur pour le paramètre. setter/mutator bloc de code:

Private _name As String

Public Property Name() As String
    Get
        Return _name
    End Get
    Private Set
        _name = value
    End Set
End Property
6
Mass Dot Net

Je trouve marquer le property comme readonly plus propre que les réponses ci-dessus. Je crois que vb14 est requis.

Private _Name As String

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

Cela peut être condensé à

Public ReadOnly Property Name As String

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

4
Adam H