Share via


Comment : déclarer et appeler une propriété par défaut en Visual Basic

Une propriété par défaut est une propriété de classe ou de structure à laquelle votre code peut accéder sans avoir à le spécifier. Lorsque le code appelant nomme une classe ou une structure mais pas une propriété, et que le contexte autorise l'accès à une propriété, Visual Basic résout l'accès à la propriété par défaut de cette classe ou de cette structure, s'il en existe une.

Une classe ou une structure peut avoir au maximum une propriété par défaut. Toutefois, il est possible de surcharger une propriété par défaut afin d'en avoir plusieurs versions.

Pour plus d’informations, consultez Par défaut.

Pour déclarer une propriété par défaut

  1. Déclarez la propriété de la façon normale. Ne spécifiez pas le mot-clé Sharedou Private.

  2. Incluez le mot-clé Default dans la déclaration de propriété.

  3. Spécifiez au moins un paramètre pour la propriété. Vous ne pouvez pas définir une propriété par défaut qui ne comprend pas au moins un argument.

    Default Property myProperty(ByVal index As Integer) As String
    

Pour appeler une propriété par défaut

  1. Déclarez une variable de la classe ou du type de structure qui la contient.

    Dim x As New class1(3)
    
  2. Utilisez le nom de la variable seul dans une expression où vous devriez normalement inclure le nom de la propriété.

    MsgBox(x)
    
  3. Suivez le nom de la variable avec une liste d’arguments entre parenthèses. Une propriété par défaut doit comprendre au moins un argument.

    MsgBox(x(1))
    
  4. Pour récupérer la valeur de propriété par défaut, utilisez le nom de la variable, avec une liste d’arguments, dans une expression ou en suivant la connexion égale (=) à une instruction d’affectation.

    MsgBox(x(1) & x(2) & x(3))
    
  5. Pour définir la valeur de la propriété par défaut, utilisez le nom de la variable, avec une liste d’arguments, sur le côté gauche d’une instruction d’affectation.

    x(1) = "Hello"
    x(2) = " "
    x(3) = "World"
    
  6. Vous pouvez toujours spécifier le nom de la propriété par défaut avec le nom de la variable, comme vous le feriez pour accéder à n’importe quelle autre propriété.

    x.myProperty(1) = "Hello"
    x.myProperty(2) = " "
    x.myProperty(3) = "World"
    

Exemple 1

L’exemple suivant déclare une propriété par défaut sur une classe.

Public Class class1
    Private myStrings() As String
    Sub New(ByVal size As Integer)
        ReDim myStrings(size)
    End Sub
    Default Property myProperty(ByVal index As Integer) As String
        Get
            ' The Get property procedure is called when the value
            ' of the property is retrieved.
            Return myStrings(index)
        End Get
        Set(ByVal Value As String)
            ' The Set property procedure is called when the value
            ' of the property is modified.
            ' The value to be assigned is passed in the argument 
            ' to Set.
            myStrings(index) = Value
        End Set
    End Property
End Class

Exemple 2

L’exemple suivant montre comment appeler la propriété par défaut myProperty sur la classe class1. Les trois instructions d’affectation stockent les valeurs dans myProperty, et l’appel MsgBox lit les valeurs.

Sub Test()
    Dim x As New class1(3)
    x(1) = "Hello"
    x(2) = " "
    x(3) = "World"
    MsgBox(x(1) & x(2) & x(3))
End Sub

L’utilisation la plus courante d’une propriété par défaut est la propriété Item[] sur différentes classes de collection.

Programmation fiable

Les propriétés par défaut peuvent entraîner une petite réduction des caractères de code source, mais elles peuvent rendre votre code plus difficile à lire. Si le code appelant n’est pas familier avec votre classe ou structure, lorsqu’il fait référence au nom de la classe ou de la structure, il ne peut pas être certain que cette référence accède à la classe ou à la structure elle-même, ou à une propriété par défaut. Cela peut entraîner des erreurs de compilateur ou des erreurs logiques d’exécution subtiles.

Vous pouvez réduire quelque peu le risque d’erreurs de propriété par défaut en utilisant toujours l’instruction Option Strict pour définir la vérification de type du compilateur sur On.

Si vous envisagez d’utiliser une classe ou une structure prédéfinie dans votre code, vous devez déterminer s’il a une propriété par défaut et, si c’est le cas, quel est son nom.

En raison de ces inconvénients, vous devez envisager de ne pas définir les propriétés par défaut. Pour la lisibilité du code, vous devez également envisager de toujours faire référence à toutes les propriétés explicitement, même les propriétés par défaut.

Voir aussi