Lire en anglais

Partager via


BC30369 : Impossible de faire référence à un membre instance d’une classe à partir d’une méthode partagée ou d’un initialiseur de membre partagé sans une instance explicite de la classe

Vous avez essayé de faire référence à un membre non partagé d’une classe à partir d’une procédure partagée. L’exemple suivant illustre cette situation :

VB
Class Sample
    Public x as Integer
    Public Shared Sub SetX()
        x = 10
    End Sub
End Class

Dans l’exemple précédent, l’instruction d’assignation x = 10 génère ce message d’erreur. Cela est dû au fait qu’une procédure partagée tente d’accéder à une variable d’instance.

La variable x est un membre d’instance, car elle n’est pas déclarée comme partagée (Shared). Chaque instance de la classe Sample contient sa propre variable xindividuelle. Quand une instance définit ou modifie la valeur de x, la valeur de x dans d’autres instances n’est pas affectée.

Toutefois, la procédure SetX est Shared entre toutes les instances de la classe Sample. Cela signifie qu’elle n’est associée à aucune instance de la classe, mais qu’elle fonctionne indépendamment des instances individuelles. Étant donné qu’elle n’est associée à aucune instance particulière, setX ne peut pas accéder à une variable d’instance. Elle doit fonctionner uniquement sur des variables Shared. Quand SetX définit ou modifie la valeur d’une variable partagée, la nouvelle valeur est disponible pour toutes les instances de la classe.

ID d’erreur : BC30369

Pour corriger cette erreur

  1. Déterminez si vous souhaitez que le membre soit partagé entre toutes les instances de la classe ou conservé comme membre individuel pour chaque instance.

  2. Si vous voulez qu’une seule copie du membre soit partagée entre toutes les instances, ajoutez le mot clé Shared à la déclaration du membre. Conservez le mot clé Shared dans la déclaration de la procédure.

  3. Si vous souhaitez que chaque instance dispose de sa propre copie individuelle du membre, ne spécifiez pas Shared pour la déclaration du membre. Supprimez le mot clé Shared de la déclaration de la procédure.

Voir aussi