Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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éfinis dans cette classe ou 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, comme une constante ou une énumération, ou une classe ou une structure imbriquées.
L’objectif du partage d’un membre est de créer une seule copie de ce membre et de mettre cette copie unique à la disposition de chaque instance de la classe ou de la structure dans laquelle elle est déclarée. Dans le cadre de cet objectif, il convient d’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 individuelle de cette classe ou structure.
L’accès à un membre Shared
via une variable d’instance peut rendre votre code plus difficile à comprendre en occultant le fait que le membre est Shared
. En outre, si cet accès fait partie d’une expression qui effectue d’autres actions, telles qu’une procédure Function
qui retourne une instance du membre partagé, Visual Basic contourne l’expression et toute autre action qu’il effectuerait autrement.
Pour plus d’informations et pour obtenir un exemple, consultez Partagé.
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 Configuring Warnings in Visual Basic.
ID d’erreur : BC42025
Exemple
L’exemple suivant génère l’erreur bc42025 :
Public Class TestClass
Public Shared Sub SayHello()
Console.WriteLine("Hello")
End Sub
End Class
Module Program
Public Sub Main()
Dim tc As New TestClass()
tc.SayHello() ' BC42025.
End Sub
End Module
Pour traiter cet avertissement
Utilisez le nom de la classe ou de la structure qui définit le membre Shared
pour y accéder, comme illustré dans l’exemple suivant :
Public Class TestClass
Public Shared Sub SayHello()
Console.WriteLine("Hello")
End Sub
End Class
Module Program
Public Sub Main()
TestClass.SayHello()
End Sub
End Module
Notes
Soyez vigilant concernant les effets de l’étendue lorsque deux éléments de programmation ont le même nom. Dans l’exemple précédent, si vous déclarez une instance à l’aide de Dim testClass As TestClass = Nothing
, le compilateur traite un appel à testClass.SayHello()
comme un accès de la méthode via le nom de la classe, et aucun avertissement ne se produit.