Procédures Property (Visual Basic)

Une procédure de propriété est une série d'instructions Visual Basic qui manipulent une propriété personnalisée d'un module, d'une classe ou d'une structure. Les procédures de propriété sont également appelées accesseurs de propriété.

Visual Basic prend en charge les procédures de propriété suivantes :

  • Une procédure Get retourne la valeur d'une propriété. Elle est appelée lorsque vous accédez à la propriété dans une expression.

  • Une procédure Set affecte une valeur à une propriété, y compris une référence d'objet. Elle est appelée lorsque vous assignez une valeur à la propriété.

Les procédures de propriété sont généralement définies par paires, à l'aide des instructions Get et Set, mais vous pouvez définir chaque procédure à part selon que la propriété est en lecture seule (Get, instruction) ou en écriture seule (Set, instruction (Visual Basic)).

Vous pouvez définir des propriétés dans les classes, les structures et les modules. Les propriétés sont Public par défaut, ce qui signifie que vous pouvez les appeler de n'importe où dans votre application qui peut accéder au conteneur de la propriété.

Pour une comparaison des propriétés et des variables, consultez Différences entre les propriétés et les variables en Visual Basic.

Syntaxe de déclaration

Une propriété est définie comme un bloc de code délimité par les instructions Property, instruction et End Property. À l'intérieur de ce bloc, chaque procédure de propriété s'affiche sous forme de bloc interne encadré par une instruction de déclaration (Get ou Set) et l'instruction de fin End correspondante.

La syntaxe de déclaration d'une propriété et de ses procédures est la suivante :

[Default] [modifiers] Property propertyname[(parameterlist)] As datatype

[accesslevel] Get

' Statements of the Get procedure.

' The following statement returns expression as the property's value.

Return expression

End Get

[accesslevel] Set[(ByVal newvalue As datatype)]

' Statements of the Set procedure.

' The following statement assigns newvalue as the property's value.

lvalue = newvalue

End Set

End Property

Les modifiers peuvent spécifier un niveau d'accès et des informations concernant la surcharge, la substitution, le partage et l'occultation, ainsi que spécifier si la propriété est en lecture seule ou en écriture seule. Les access level sur la procédure Get ou Set peuvent être de tout niveau plus restrictif que le niveau d'accès spécifié pour la propriété elle-même. Pour plus d'informations, consultez Property, instruction.

Type de données

Le type de données et le niveau d'accès principal d'une propriété sont définis dans l'instruction Property, et non dans les procédures de propriété. Une propriété peut avoir uniquement un type de données. Par exemple, vous ne pouvez pas définir une propriété pour stocker une valeur Decimal et récupérer une valeur Double.

Niveau d'accès

Toutefois, vous pouvez définir un niveau d'accès principal pour une propriété et restreindre encore plus le niveau d'accès dans l'une de ses procédures de propriété. Par exemple, vous pouvez définir une propriété Public puis définir une procédure Private Set La procédure Get reste Public. Vous pouvez modifier le niveau d'accès dans une seule des procédures d'une propriété et vous pouvez uniquement le rendre plus restrictif que le niveau d'accès principal. Pour plus d'informations, consultez Comment : déclarer une propriété avec des niveaux d'accès mixtes (Visual Basic).

Déclaration de paramètre

Vous déclarez chaque paramètre de la même façon que pour Procédures Sub (Visual Basic), à la différence que le mécanisme de passage doit être ByVal.

La syntaxe de chaque paramètre dans la liste des paramètres est la suivante :

[Optional] ByVal [ParamArray] parametername As datatype

Si le paramètre est facultatif, vous devez également fournir une valeur par défaut dans le cadre de sa déclaration. La syntaxe de spécification d'une valeur par défaut est la suivante :

Optional ByVal parametername As datatype = defaultvalue

Valeur de la propriété

Dans une procédure Get, la valeur de retour est fournie à l'expression appelante en tant que valeur de la propriété.

Dans une procédure Set, la nouvelle valeur de propriété est transférée au paramètre de l'instruction Set. Si vous déclarez explicitement un argument, vous devez le faire en utilisant le même type de données que la propriété. Si vous ne déclarez pas d'argument, le compilateur utilise l'argument implicite Value pour représenter la nouvelle valeur à assigner à la propriété.

Syntaxe d'appel

Vous appelez une procédure de propriété implicitement en faisant la référence à la propriété. Utilisez le nom de la propriété de la même façon que le nom d'une variable, sauf que vous devez fournir des valeurs pour tous les arguments non facultatifs et placer la liste des arguments entre parenthèses. Si aucun argument n'est spécifié, vous pouvez ne pas mettre les parenthèses.

La syntaxe d'un appel implicite à une procédure Set est la suivante :

propertyname[(argumentlist)] = expression

La syntaxe d'un appel implicite à une procédure Get est la suivante :

lvalue = propertyname[(argumentlist)]

Do While (propertyname[(argumentlist)] > expression)

Illustration de déclaration et d'appel

La propriété suivante stocke un nom complet comme deux noms constitutifs, le prénom et le nom. Lorsque le code appelant lit fullName, la procédure Get combine les deux noms constitutifs et retourne le nom complet. Lorsque le code appelant assigne un nouveau nom complet, la procédure Set tente de le décomposer en deux noms constitutifs. S'il ne trouve pas d'espace, il le stocke en tant que prénom.

Dim firstName, lastName As String
Property fullName() As String
    Get
      If lastName = "" Then
          Return firstName
      Else
          Return firstName & " " & lastName
      End If

    End Get
    Set(ByVal Value As String)
        Dim space As Integer = Value.IndexOf(" ")
        If space < 0 Then
            firstName = Value
            lastName = ""
        Else
            firstName = Value.Substring(0, space)
            lastName = Value.Substring(space + 1)
        End If
    End Set
End Property

L'exemple suivant montre des appels typiques aux procédures de propriété de fullName.

fullName = "MyFirstName MyLastName"
MsgBox(fullName)

Voir aussi

Tâches

Comment : créer une propriété (Visual Basic)

Comment : appeler une procédure de propriété (Visual Basic)

Comment : déclarer et appeler une propriété par défaut en Visual Basic

Comment : placer une valeur dans une propriété (Visual Basic)

Comment : obtenir une valeur d'une propriété (Visual Basic)

Concepts

Procédures dans Visual Basic

Procédures Function (Visual Basic)

Procédures d'opérateur (Visual Basic)

Paramètres et arguments d'une procédure (Visual Basic)

Différences entre les propriétés et les variables en Visual Basic