Partager via


Propriétés et procédures de propriété

Mise à jour : novembre 2007

Vous pouvez avoir recours aux propriétés et aux champs pour stocker des informations dans un objet. Les champs sont tout simplement des variables publiques, alors que les propriétés utilisent des procédures de propriété pour contrôler la façon dont les valeurs sont définies ou retournées. Les procédures de propriété sont des blocs de code déclarés dans des définitions de propriété que vous pouvez utiliser pour exécuter du code quand une valeur de propriété est définie ou extraite.

Visual Basic possède deux types de procédures de propriété : les procédures de propriété Get qui permettent d'extraire une valeur de propriété, et les procédures de propriété Set qui servent à assigner une valeur à une propriété. Par exemple, une propriété qui stocke le solde d'un compte bancaire peut utiliser le code d'une procédure de propriété Get pour imputer les intérêts et contrôler les frais de gestion avant de retourner le solde disponible. Vous pouvez utiliser par la suite la procédure de propriété Set pour valider le solde et éviter qu'elle soit mise à jour de façon incorrecte. En bref, les procédures de propriété permettent à un objet de protéger et de valider ses propres données.

Le fragment de code suivant compare la manière dont les champs et les propriétés valident les valeurs.

Protected Sub TestFieldsAndProperties()
    ' Assume, for this example, that the only valid values for
    ' the field and property are numbers less than 10.
    Dim NewClass As New ThisClass

    ' Test data validation. 

    ' Works because there is no data validation.
    NewClass.ThisField = 36
    ' Will print 36.
    MsgBox("ThisField = " & NewClass.ThisField)

    ' The attempt to set the field to a value greater than 10 will silently fail.
    NewClass.ThisProperty = 36
    ' The next statement will print the old value of 0 instead.
    MsgBox("ThisProperty = " & NewClass.ThisProperty)
End Sub

Public Class ThisClass
    ' Declare a field.
    Public ThisField As Integer
    ' Field used for Property Set operations.
    Private thisPropertyValue As Integer = 0
    ' Declare a property.
    Public Property ThisProperty() As Integer
        Get
            Return thisPropertyValue
        End Get
        Set(ByVal Value As Integer)
            ' Only allow Set operation for values less than 10.
            If Value < 10 Then thisPropertyValue = Value
        End Set
    End Property
End Class

La procédure TestFieldsAndProperties crée une instance de la classe, puis définit et extrait les valeurs des champs et des propriétés. Pour les besoins de l'exemple, nous supposons que seuls les nombres inférieurs à 10 sont des valeurs valides. Étant donné qu'aucune méthode ne permet de valider les valeurs assignées aux champs, l'attribution de la valeur 36 au champ est admise. Cependant, la propriété effectue des assignations uniquement pour les nombres inférieurs à 10, c'est pourquoi la tentative de lui attribuer la valeur 36 est ignorée.

Propriétés en lecture seule et en écriture seule

La plupart des propriétés possèdent à la fois des procédures de propriété Get et Set pour vous permettre de lire et de modifier la valeur qu'elles stockent. Vous pouvez néanmoins utiliser les modificateurs ReadOnly ou WriteOnly pour empêcher la modification ou la lecture des propriétés.

Les propriétés en lecture seule ne peuvent pas être assorties de procédures de propriété Set ; ces propriétés sont utiles pour les éléments que vous voulez exposer sans qu'ils ne puissent être modifiés. Par exemple, vous pouvez recourir à une propriété en lecture seule qui fournira la vitesse de processeur d'un ordinateur.

Les propriétés en écriture seule ne peuvent pas avoir de procédures de propriété Get et sont utiles pour configurer des objets dont les données ne doivent pas ou ne peuvent pas être stockées dans l'objet. Par exemple, une propriété en écriture seule peut être utilisée pour gérer un mot de passe et modifier l'état de l'objet sans stocker le mot de passe.

Remarque :

Les versions précédentes de Visual Basic prennent en charge des procédures de propriété Let qui peuvent être utilisées lors de l'assignation des objets aux propriétés. Dans Visual Basic, les procédures de propriété Let ne sont plus nécessaires puisque que l'assignation d'objets est gérée comme tout autre type d'assignation.

Voir aussi

Concepts

Procédures Property

Procédures Property et champs

Référence

Get, instruction

Set, instruction (Visual Basic)

ReadOnly (Visual Basic)

WriteOnly