Partager via


Accès d'un membre partagé via une instance ; l'expression qualifiante ne sera pas évaluée

Mise à jour : novembre 2007

Access of shared member through an instance; qualifying expression will not be evaluated

Une variable d'instance d'une classe ou d'une structure est utilisée pour accéder à une variable, une propriété, une procédure ou un événement Shared défini dans cette classe ou dans cette structure. Cet avertissement peut également se produire si une variable d'instance est utilisée pour accéder à un membre implicitement partagé d'une classe ou d'une structure, par exemple une constante, une énumération, ou encore une classe ou une structure imbriquée.

L'objectif du partage d'un membre est de créer une seule copie de ce membre et de la rendre disponible à chaque instance de la classe ou de la structure dans laquelle elle est déclarée. Il est conforme à l'objectif consistant à accéder à un membre Shared par le biais du nom de sa classe ou de sa structure, plutôt que par le biais d'une variable qui contient une instance de cette classe ou de cette structure.

L'accès à un membre Shared par le biais d'une variable d'instance peut rendre votre code plus difficile à comprendre en occultant le fait que le membre soit Shared. En outre, si un tel accès fait partie d'une expression qui exécute d'autres actions, par exemple une procédure Function qui retourne une instance du membre partagé, Visual Basic ignore l'expression et toutes les autres actions qui, autrement, seraient exécutées.

Pour obtenir des informations supplémentaires et un exemple, consultez Shared (Visual Basic).

Par défaut, ce message est un avertissement. Pour plus d'informations sur le masquage des avertissements ou le traitement des avertissements en tant qu'erreurs, consultez Configuration d'avertissements en Visual Basic.

ID d'erreur : BC42025

Pour corriger cette erreur

  • Utilisez le nom de la classe ou de la structure qui définit le membre Shared pour y accéder.

  • Soyez vigilant par rapport aux effets de portée lorsque deux éléments de programmation portent le même nom. L'exemple suivant déclare une variable testClass portant le même nom que la classe du même type. Le compilateur interprète l'appel à sayHello() comme un accès via le nom de classe testClass et aucun avertissement ne s'affiche.

    Public Class testClass
        Public Shared Sub sayHello()
            MsgBox("Hello")
        End Sub
    End Class
    Module testModule
        Public Sub Main()
            Dim testClass As testClass = Nothing
            testClass.sayHello()
        End Sub
    End Module
    

Voir aussi

Concepts

Portée dans Visual Basic

Référence

Shared (Visual Basic)