Membres partagés en Visual Basic

Mise à jour : novembre 2007

Les membres partagés sont des propriétés, des procédures et des champs qui sont partagés par toutes les instances d'une classe ou structure. Ils sont appelés membres statiques dans certains langages de programmation.

Champs et propriétés partagés

Les champs et propriétés partagés sont utiles lorsque certaines informations font partie d'une classe, mais ne sont pas spécifiques à une instance particulière d'une classe. Lorsque vous modifiez la valeur d'un champ et d'une propriété partagés, vous modifiez la valeur associée à la classe et à toutes les instances de la classe.

En revanche, modifier la valeur d'un champ ou d'une propriété non partagés associés à une instance particulière n'a aucune incidence sur la valeur de ce champ ou de cette propriété dans les autres instances de la classe. Des champs et propriétés non partagés existent indépendamment pour chaque instance d'une classe.

De cette façon, les champs et propriétés partagés se comportent comme des variables globales accessibles uniquement à partir d'instances d'une classe ou avec la qualification du nom de classe. Sans champs et propriétés partagés, vous devriez recourir à des variables au niveau du module pour obtenir le même résultat. Cependant, l'emploi de variables de module peut rendre les classes difficiles à comprendre et à gérer. De plus, utiliser ces variables de cette façon enfreint le concept d'encapsulation représenté par les classes.

Procédures partagées

Les procédures partagées sont des méthodes de classe qui ne sont pas associées à une instance spécifique d'une classe. Par exemple, la méthode Cos définie dans la classe Math est une méthode partagée. Il est possible d'appeler une procédure partagée en tant que méthode d'un objet ou directement à partir de la classe.

Les procédures et propriétés partagées n'ont pas accès aux instances de la classe. Pour cette raison, les méthodes partagées ne peuvent contenir que des références qualifiées à des données membres non partagées.

Remarque :

Il est recommandé de ne pas écrire de code dans lequel vous accéderiez à un membre partagé par le biais d'une instance de la classe. Ceci parce que le compilateur ignore la qualification du membre partagé et le traite comme si l'accès au membre partagé avait été réalisé directement par le biais de la classe. Dans certaines situations, vous pouvez projeter que l'objet qualifiant exécute du code et, par conséquent, que le compilateur Visual Basic génère un avertissement pour l'accès à un membre partagé par le biais d'une instance d'une classe. IntelliSense n'affiche pas de membres partagés pour une instance de la classe.

Membres partagés - exemple

L'exemple suivant crée un champ partagé, deux champs d'instance et une méthode partagée pour illustrer le fonctionnement des membres partagés dans le code :

Public Class Item
    Public Shared Count As Integer = 1
    Public Shared Sub ShareMethod()
        MsgBox("Current value of Count: " & Count)
    End Sub

    Public Sub New(ByVal Name As String)
        ' Use Count to initialize SerialNumber.
        Me.SerialNumber = Count
        Me.Name = Name
        ' Increment the shared variable
        Count += 1
    End Sub
    Public SerialNumber As Integer
    Public Name As String
    Public Sub InstanceMethod()
        MsgBox("Information in the first object: " & _
            Me.SerialNumber & vbTab & Me.Name)
    End Sub
End Class

Sub TestShared()
    ' Create two instances of the class.
    Dim part1 As New Item("keyboard")
    Dim part2 As New Item("monitor")

    part1.InstanceMethod()
    part2.InstanceMethod()
    Item.ShareMethod()
End Sub

Lorsque vous exécutez la procédure TestShared, deux instances de la classe sont créées. Le constructeur utilise le champ partagé Count pour initialiser le champ d'instance SerialNumber, puis incrémente Count. Cette technique donne automatiquement un numéro de série différent à chaque instance.

Après avoir créé les deux instances, la méthode d'instance InstanceMethod est appelée sur les deux objets et la méthode partagée ShareMethod est également appelée. Le résultat est le suivant :

Information in the first object: 1 keyboard

Information in the second object: 2 monitor

Current value of the shared Count field: 3

Voir aussi

Concepts

Structures et classes

Référence

Dim, instruction (Visual Basic)

Cos

Autres ressources

Propriétés, champs et méthodes de classe

Structures constituées à partir de vos propres types de données