Property Statement

Définit le nom d'une propriété, ainsi que les procédures de propriété utilisées pour stocker et récupérer la valeur de la propriété.

Syntaxe

[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ] [ Iterator ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]
    [ <attributelist> ] [ accessmodifier ] Get
        [ statements ]
    End Get
    [ <attributelist> ] [ accessmodifier ] Set ( ByVal value As returntype [, parameterlist ] )
        [ statements ]
    End Set
End Property
- or -
[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]

Éléments

  • attributelist

    Optionnel. Liste des attributs appliqués à cette propriété ou procédure Get ou Set. Consultez la Liste des attributs.

  • Default

    Optionnel. Spécifie que cette propriété constitue la propriété par défaut de la classe ou structure qui lui est associée. Les propriétés par défaut doivent accepter des paramètres et peuvent être définies et récupérées sans spécifier le nom de la propriété. Si vous définissez la propriété en tant que Default, vous ne pouvez pas utiliser Private sur la propriété ou sur l’une de ses procédures de propriété.

  • accessmodifier

    Facultatif sur l’instruction Property et sur au moins l’une des instructions Get et Set. Il peut s'agir d'une des méthodes suivantes :

    Consultez Access levels in Visual Basic.

  • propertymodifiers

    Optionnel. Il peut s'agir d'une des méthodes suivantes :

  • Shared

    Optionnel. Consultez Partagé.

  • Shadows

    Optionnel. Consultez Shadows.

  • ReadOnly

    Optionnel. Consultez ReadOnly.

  • WriteOnly

    Optionnel. Consultez EnÉcritureSeule.

  • Iterator

    Optionnel. Consultez Iterator.

  • name

    Obligatoire. Nom de la propriété. Consultez Declared Element Names.

  • parameterlist

    Optionnel. Liste des noms de variables locales représentant les paramètres de cette propriété et des paramètres supplémentaires possibles de la procédure Set. Consultez la Liste des paramètres.

  • returntype

    Obligatoire si Option Strict est On. Le type de données de la valeur renvoyée par la propriété.

  • Implements

    Optionnel. Indique que cette propriété implémente une ou plusieurs propriétés, chacune définie dans une interface implémentée par la classe ou la structure contenant cette propriété. Consultez Instruction d’implémentations.

  • implementslist

    Obligatoire si Implements est utilisé. Liste des propriétés en cours d'implémentation.

    implementedproperty [ , implementedproperty ... ]

    Chaque implementedproperty emploie la syntaxe et les éléments suivants :

    interface.definedname

    Élément Description
    interface Obligatoire. Nom d’une interface implémentée par la classe ou structure de cette propriété.
    definedname Obligatoire. Nom par lequel la procédure est définie dans interface.
  • Get

    Optionnel. Obligatoire si la propriété est marquée ReadOnly. Démarre une procédure de propriété Get utilisée pour renvoyer la valeur de la propriété. L’instruction Get n’est pas utilisée avec les propriétés implémentées automatiquement.

  • statements

    Optionnel. Bloc d’instructions à exécuter dans la procédure Get ou Set.

  • End Get

    Termine la procédure de propriété Get.

  • Set

    Optionnel. Obligatoire si la propriété est marquée WriteOnly. Démarre une procédure de propriété Set utilisée pour renvoyer la valeur de la propriété. L’instruction Set n’est pas utilisée avec les propriétés implémentées automatiquement.

  • End Set

    Termine la procédure de propriété Set.

  • End Property

    Met fin à la définition de cette propriété.

Notes

L’instruction Property introduit la déclaration d’une propriété. Une propriété peut comporter une Get procédure (lecture seule), une Setprocédure (écriture seule) ou les deux (lecture-écriture). Vous pouvez omettre la procédure Get et Set lors de l’utilisation d’une propriété implémentée automatiquement. Pour plus d’informations, consultez Propriétés implémentées automatiquement.

Vous pouvez utiliser Property seulement au niveau de la classe. Cela signifie que le contexte de déclaration pour une propriété doit être une classe, une structure, un module ou une interface, et ne peut pas être un fichier source, un espace de noms, une procédure ou un bloc. Pour plus d’informations, consultez Contextes de déclaration et niveaux d’accès par défaut.

Par défaut, les propriétés utilisent l’accès public. Vous pouvez ajuster le niveau d’accès d’une propriété avec un modificateur d’accès sur l’instruction Property, et vous pouvez éventuellement ajuster l’une de ses procédures de propriété à un niveau d’accès plus restrictif.

Visual Basic transmet un paramètre à la procédure Set lors des attributions de propriétés. Si vous ne fournissez pas de paramètre pour Set, l’environnement de développement intégré (IDE) utilise un paramètre implicite nommé value. Ce paramètre contient la valeur à affecter à la propriété. Vous stockez généralement cette valeur dans une variable locale privée et vous la retournez chaque fois que la procédure Get est appelée.

Règles

  • Niveaux d’accès mixtes. Si vous définissez une propriété en lecture-écriture, vous pouvez éventuellement spécifier un niveau d’accès différent pour la procédure Get ou Set, mais pas les deux. Dans ce cas, le niveau d’accès de la procédure doit être plus restrictif que le niveau d’accès de la propriété. Par exemple, si la propriété est définie comme Friend, vous pouvez définir la Set procédure Private, mais pas Public.

    Si vous définissez une propriété ReadOnly ou WriteOnly, la procédure de propriété unique (Get ou Set, respectivement) représente l’ensemble de la propriété. Vous ne pouvez pas définir un niveau d’accès différent pour une telle procédure, puisque cela définit dans ce cas deux niveaux d’accès pour la propriété.

  • Type de retour. L’instruction Property peut définir le type de données de la valeur qu’elle renvoie. Vous pouvez spécifier le type de données de votre choix ou le nom d’une énumération, d’une structure, d’une classe ou d’une interface.

    Si vous ne spécifiez pas returntype, la propriété renvoie Object.

  • Implémentation : Si cette propriété utilise le mot clé Implements, la classe ou la structure qui la contient doit comporter une instruction Implements immédiatement après son instruction Class ou Structure. L’instruction Implements doit inclure chaque interface spécifiée dans implementslist. Toutefois, le nom par lequel une interface définit le Property (dans definedname) ne doit pas être identique au nom de cette propriété (dans name).

Comportement

  • Retour à partir d’une procédure de propriété. Lorsque la procédure Get ou Set renvoie au code appelant, l’exécution se poursuit avec l’instruction suivant celle qui l'a invoquée.

    Les instructions Exit Property et Return provoquent une sortie immédiate d’une procédure de propriété. Tout nombre d’instructions Exit Property et Return peut apparaître où que ce soit dans la procédure, et vous pouvez associer des instructions Exit Property et Return.

  • Valeur renvoyée. Pour renvoyer une valeur d’une procédure Get, vous pouvez affecter la valeur au nom de la propriété ou l’inclure dans une instruction Return. L’exemple suivant affecte la valeur de retour au nom de la propriété quoteForTheDay, puis utilise l’instruction Exit Property à renvoyer.

    Private quoteValue As String = "No quote assigned yet."
    
    ReadOnly Property QuoteForTheDay() As String
        Get
            QuoteForTheDay = quoteValue
            Exit Property
        End Get
    End Property
    

    Si vous utilisez Exit Property sans affecter de valeur à name, la procédure Get retourne la valeur par défaut pour le type de données de la propriété.

    L’instruction Return affecte simultanément la valeur de renvoi de la procédure Get et quitte la procédure. L'exemple suivant illustre cela.

    Private quoteValue As String = "No quote assigned yet."
    
    ReadOnly Property QuoteForTheDay() As String
        Get
            Return quoteValue
        End Get
    End Property
    

Exemple

L’exemple suivant présente une propriété dans une classe.

Class Class1
    ' Define a local variable to store the property value.
    Private propertyValue As String
    ' Define the property.
    Public Property Prop1() As String
        Get
            ' The Get property procedure is called when the value
            ' of a property is retrieved.
            Return propertyValue
        End Get
        Set(ByVal value As String)
            ' The Set property procedure is called when the value
            ' of a property is modified.  The value to be assigned
            ' is passed in the argument to Set.
            propertyValue = value
        End Set
    End Property
End Class

Voir aussi