Procédures Property
Mise à jour : novembre 2007
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 accesslevel 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.
Déclaration de paramètre
Vous déclarez chaque paramètre de la même façon que pour Sub, procédures, à 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 : 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é
Concepts
Paramètres et arguments d'une procédure
Différences entre les propriétés et les variables en Visual Basic