Procédures de propriété (Visual Basic)
Une procédure de propriété est une série d’instructions Visual Basic qui manipulent une propriété personnalisée sur un module, une classe ou une structure. Les procédures de propriété sont également appelées accesseurs de propriétés.
Visual Basic fournit 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
définit une propriété sur une valeur, y compris une référence d’objet. Elle est appelée lorsque vous affectez une valeur à la propriété.
Vous définissez généralement des procédures de propriété en paires, à l’aide des instructions Get
et Set
, mais vous pouvez définir une procédure seule si la propriété est en lecture seule (Get Statement) ou en écriture seule (Set Statement).
Vous pouvez omettre la procédure et Set
l’utiliser lors de l’utilisation Get
d’une propriété implémentée automatiquement. Pour plus d’informations, consultez Propriétés implémentées automatiquement.
Vous pouvez définir des propriétés dans des classes, des structures et des modules. Les propriétés sont Public
par défaut, ce qui signifie que vous pouvez les appeler n’importe où dans votre application qui peuvent accéder au conteneur de la propriété.
Pour obtenir une comparaison des propriétés et des variables, consultez Différences entre les propriétés et les variables dans Visual Basic.
Syntaxe de déclaration
Une propriété elle-même est définie par un bloc de code placé dans l’instruction Property et l’instruction End Property
. À l’intérieur de ce bloc, chaque procédure de propriété apparaît sous la forme d’un bloc interne placé dans une instruction de déclaration (Get
ou Set
) et de la déclaration de 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 an 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
' - or -
[Default] [Modifiers] Property PropertyName [(ParameterList)] [As DataType]
Le Modifiers
peut spécifier le niveau d’accès et les informations concernant la surcharge, la substitution, le partage et l’ombre, ainsi que si la propriété est en lecture seule ou en écriture seule. Le AccessLevel
de la procédure Get
ou Set
peut être n’importe quel niveau plus restrictif que le niveau d’accès spécifié pour la propriété elle-même. Pour plus d’informations, consultez Property Statement.
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é ne peut avoir qu’un seul type de données. Par exemple, vous ne pouvez pas définir une propriété pour stocker une valeur Decimal
, mais 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 davantage 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 ne pouvez 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.
Déclaration de paramètre
Vous déclarez chaque paramètre de la même façon que pour sous-procédures, sauf que le mécanisme de passage doit être ByVal
.
La syntaxe de chaque paramètre de 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 permettant de spécifier 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 comme valeur de la propriété.
Dans une procédure Set
, la nouvelle valeur de propriété est passée au paramètre de l’instruction Set
. Si vous déclarez explicitement un paramètre, vous devez le déclarer avec le même type de données que la propriété. Si vous ne déclarez pas de paramètre, le compilateur utilise le paramètre implicite Value
pour représenter la nouvelle valeur à affecter à la propriété.
Syntaxe appelante
Vous appelez implicitement une procédure de propriété en faisant référence à la propriété. Vous utilisez le nom de la propriété de la même façon que vous utilisez le nom d’une variable, sauf que vous devez fournir des valeurs pour tous les arguments qui ne sont pas facultatifs, et vous devez placer la liste d’arguments entre parenthèses. Si aucun argument n’est fourni, vous pouvez éventuellement omettre 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 la déclaration et de l’appel
La propriété suivante stocke un nom complet sous la forme de deux noms constituants, le prénom et le nom. Lorsque le code appelant lit fullName
, la procédure Get
combine les deux noms constituants et retourne le nom complet. Lorsque le code appelant attribue un nouveau nom complet, la procédure Set
tente de le diviser en deux noms constitutifs. S’il ne trouve pas d’espace, il le stocke comme 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 classiques aux procédures de propriété de fullName
:
fullName = "MyFirstName MyLastName"
MsgBox(fullName)
Voir aussi
- Procédures
- Function, procédures
- Procédures d'opérateur
- Paramètres et arguments d’une procédure
- Différences entre les propriétés et les variables en Visual Basic
- Comment : créer une propriété
- Comment : appeler une procédure de propriété
- Comment : déclarer et appeler une propriété par défaut en Visual Basic
- Comment : placer une valeur dans une propriété
- Comment : obtenir une valeur d'une propriété