Propriétés implémentées automatiquement (Visual Basic)
Les propriétés implémentées automatiquement vous permettent de spécifier rapidement une propriété d'une classe sans devoir écrire le code dans la propriété Get et Set. Lorsque vous écrivez le code d'une propriété implémentée automatiquement, le compilateur Visual Basic crée automatiquement un champ privé pour stocker la variable de propriété en plus de créer les procédures Get et Set associées.
Avec les propriétés implémentées automatiquement, une propriété, comprenant une valeur par défaut, peut être déclarée sur une seule ligne. L'exemple suivant illustre trois déclarations de propriété.
Public Property Name As String
Public Property Owner As String = "DefaultName"
Public Property Items As New List(Of String) From {"M", "T", "W"}
Public Property ID As New Guid()
Une propriété implémentée automatiquement est équivalente à une propriété pour laquelle la valeur de propriété est stockée dans un champ privé. L'exemple de code suivant illustre une propriété implémentée automatiquement.
Property Prop2 As String = "Empty"
L'exemple de code suivant affiche le code équivalent pour l'exemple précédent de propriété implémentée automatiquement.
Private _Prop2 As String = "Empty"
Property Prop2 As String
Get
Return _Prop2
End Get
Set(ByVal value As String)
_Prop2 = value
End Set
End Property
Champ de stockage
Lorsque vous déclarez une propriété implémentée automatiquement, Visual Basic crée automatiquement un champ privé caché appelé champ de stockage pour contenir la valeur de propriété. Le nom du champ de stockage est le nom de la propriété implémentée automatiquement précédé par un trait de soulignement (_). Par exemple, si vous déclarez une propriété implémentée automatiquement appelée ID, le champ de stockage est nommé _ID. Si vous incluez un membre de votre classe également nommé _ID, vous créez un conflit de nom et Visual Basic signale une erreur du compilateur.
Le champ de stockage possède également les caractéristiques suivantes :
Le modificateur d'accès pour le champ de stockage est toujours Private, même quand la propriété elle-même possède un niveau d'accès différent, tel que Public.
Si la propriété est marquée comme Shared, le champ de stockage est également partagé.
Les attributs spécifiés pour la propriété ne s'appliquent pas au champ de stockage.
Le champ de stockage est accessible à partir du code à l'intérieur de la classe et des outils de débogage tels que la fenêtre Espion. Toutefois, le champ de stockage ne s'affiche pas dans une liste de saisie semi-automatique de mot IntelliSense.
Initialisation d'une propriété implémentée automatiquement
Toute expression qui peut être utilisée pour initialiser un champ est valide pour l'initialisation d'une propriété implémentée automatiquement. Lorsque vous initialisez une propriété implémentée automatiquement, l'expression est évaluée et passée à la procédure Set pour la propriété. Les exemples de code suivants illustrent quelques propriétés implémentées automatiquement qui incluent des valeurs initiales.
Property FirstName As String = "James"
Property PartNo As Integer = 44302
Property Orders As New List(Of Order)(500)
Vous ne pouvez pas initialiser une propriété implémentée automatiquement qui est membre d'une Interface ou qui est marquée MustOverride.
Lorsque vous déclarez une propriété implémentée automatiquement comme membre d'une Structure, vous pouvez initialiser uniquement la propriété implémentée automatiquement si elle est marquée Shared.
Lorsque vous déclarez une propriété implémentée automatiquement comme tableau, vous ne pouvez pas spécifier de limites d'index de tableau explicites. Toutefois, vous pouvez fournir une valeur à l'aide d'un initialiseur de tableau, comme indiqué dans les exemples suivants.
Property Grades As Integer() = {90, 73}
Property Temperatures As Integer() = New Integer() {68, 54, 71}
Définitions de propriété qui requièrent la syntaxe standard
Les propriétés implémentées automatiquement sont pratiques et prennent en charge de nombreux scénarios de programmation. Toutefois, il existe des situations dans lesquelles vous ne pouvez pas utiliser de propriété implémentée automatiquement, mais à la place, vous devez utiliser une syntaxe de propriété standard ou développée.
Vous devez utiliser la syntaxe de définition de propriété développée si vous souhaitez effectuer l'une des opérations suivantes :
Ajouter du code à la procédure Get ou Set d'une propriété, tel que le code permettant de valider des valeurs entrantes dans la procédure Set. Par exemple, vous pouvez vérifier qu'une chaîne représentant un numéro de téléphone contient le nombre requis de chiffres avant de définir la valeur de propriété.
Spécifier une accessibilité différente pour la procédure Get et Set. Par exemple, vous souhaiterez peut-être rendre la procédure Set Private et la procédure Get Public.
Créer des propriétés possédant l'attribut WriteOnly ou ReadOnly.
Utiliser des propriétés paramétrables (notamment des propriétés Default). Vous devez déclarer une propriété développée pour spécifier un paramètre pour la propriété ou des paramètres supplémentaires pour la procédure Set.
Placez un attribut sur le champ de stockage ou modifiez le niveau d'accès du champ de stockage.
Fournir des commentaires XML pour le champ de stockage.
Développement d'une propriété implémentée automatiquement
Si vous devez convertir une propriété implémentée automatiquement en une propriété développée qui contient une procédure Get ou Set, l'éditeur de code de Visual Basic peut générer automatiquement les procédures Get et Set et l'instruction End Property pour la propriété. Le code est généré si vous placez le curseur sur une ligne vierge suivant l'instruction Property, si vous tapez un G (pour Get) ou un S (pour Set) et si vous appuyez sur ENTRÉE. L'éditeur de code de Visual Basic génère automatiquement la procédure Get ou Set pour les propriétés en lecture seule ou en écriture seule lorsque vous appuyez sur ENTRÉE à la fin d'une instruction Property.
Voir aussi
Tâches
Comment : déclarer et appeler une propriété par défaut en Visual Basic
Comment : déclarer une propriété avec des niveaux d'accès mixtes (Visual Basic)
Référence
Autres ressources
Objets et classes en Visual Basic
Historique des modifications
Date |
Historique |
Motif |
Mai 2010 |
Ajout d'une remarque à propos des niveaux d'accès de champ de stockage. |
Commentaires client. |