Partage via


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 avoir à écrire du code dans Get et Set la propriété. Lorsque vous écrivez du code pour 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 et Set les procédures associéesGet.

Avec les propriétés implémentées automatiquement, une propriété, y compris une valeur par défaut, peut être déclarée dans une seule ligne. L'exemple suivant montre 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 équivaut à une propriété pour laquelle la valeur de propriété est stockée dans un champ privé. L’exemple de code suivant montre une propriété implémentée automatiquement.

Property Prop2 As String = "Empty"

L’exemple de code suivant montre le code équivalent de l’exemple de propriété implémenté automatiquement précédent.

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

Le code suivant montre l'implémentation des propriétés en lecture seule :

Class Customer  
   Public ReadOnly Property Tags As New List(Of String)  
   Public ReadOnly Property Name As String = ""  
   Public ReadOnly Property File As String  
  
   Sub New(file As String)  
      Me.File = file  
   End Sub  
End Class  

Vous pouvez assigner la propriété avec des expressions d'initialisation, comme illustré dans cet exemple, ou vous pouvez assigner les propriétés dans le constructeur du type conteneur. Vous pouvez assigner les champs de stockage des propriétés en lecture seule à tout moment.

Champ de stockage

Lorsque vous déclarez une propriété implémentée automatiquement, Visual Basic crée automatiquement un champ privé masqué appelé champ de stockage pour contenir la valeur de propriété. Le nom du champ de stockage est le nom de propriété implémenté automatiquement précédé d’un trait de soulignement (_). Par exemple, si vous déclarez une propriété implémentée automatiquement nommé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 noms 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é a elle-même 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 dans 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 IntelliSense.

Initialisation d’une propriété implémentée automatiquement

Toute expression qui peut être utilisée pour initialiser un champ est valide pour initialiser une propriété implémentée automatiquement. Lorsque vous initialisez une propriété implémentée automatiquement, l’expression est évaluée et transmise à la Set procédure de la propriété. Les exemples de code suivants montrent certaines 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’un Interfaceou d’une propriété marquée MustOverride.

Lorsque vous déclarez une propriété implémentée automatiquement en tant que membre d’un Structure, vous ne pouvez initialiser la propriété implémentée automatiquement que si elle est marquée comme Shared.

Lorsque vous déclarez une propriété implémentée automatiquement en tant que tableau, vous ne pouvez pas spécifier de limites 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és 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 une propriété implémentée automatiquement et doit utiliser à la place la syntaxe standard, ou développée, de propriété.

Vous devez utiliser la syntaxe de définition de propriété développée pour effectuer les opérations suivantes :

  • Ajouter du code à la procédure Get ou Set d'une propriété, tel que du 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 de chiffres requis avant de définir la valeur de la propriété.

  • Spécifier une accessibilité différente pour les procédures Get et Set. Par exemple, vous souhaiterez peut-être définir la procédure Set comme Private et la procédure Get comme Public.

  • Créer des propriétés WriteOnly.

  • Utiliser des propriétés paramétrables (notamment les propriétés Default). Vous devez déclarer une propriété développée pour pouvoir spécifier un paramètre pour la propriété, ou pour spécifier des paramètres supplémentaires pour la procédure Set.

  • Placer un attribut sur le champ de stockage ou modifier 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 propriété développée qui contient une Get ou Set une procédure, Visual Basic Code Editor peut générer automatiquement les Get procédures et End Property Set l’instruction de la propriété. Le code est généré si vous placez le curseur sur une ligne vide après l’instruction Property , tapez un G (pour Get) ou un S (pour Set) et 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 et en écriture seule quand vous appuyez sur Entrée à la fin d'une instruction Property.

Voir aussi