Partager via


Dépannage des variables en Visual Basic

Cette page répertorie certains problèmes courants qui peuvent se produire lors de l'utilisation des variables en Visual Basic.

Impossible d'accéder aux membres d'un objet

Si votre code essaie d'accéder à une propriété ou une méthode sur un objet, deux types d'erreur possibles peuvent se produire :

  • Le compilateur peut générer un message d'erreur si vous déclarez la variable objet comme étant d'un type spécifique puis vous faites référence à un membre qui n'est pas défini par ce type.

  • Une exception MemberAccessException runtime se produit lorsque l'objet assigné à une variable objet n'expose pas le membre que votre code essaie d'accéder.Dans le cas d'une variable de Object, type de données, vous pouvez également obtenir cette exception si le membre n'est pas Public.Ceci s'explique par le fait que la liaison tardive autorise l'accès uniquement aux membres Public.

Lorsque l'Option Strict, instruction affecte la valeur On à la vérification du type, une variable objet ne peut accéder qu'aux méthodes et propriétés de la classe avec laquelle vous la déclarez.L'exemple suivant illustre ce comportement.

Dim p As Object = New System.Windows.Forms.Label
Dim q As System.Windows.Forms.Label = New System.Windows.Forms.Label
Dim j, k As Integer
' The following statement generates a compiler error.
j = p.Left
' The following statement retrieves the left edge of the label 
' in pixels.
k = q.Left

Dans cet exemple, p peut utiliser uniquement les membres de la classe Object elle-même, lesquels n'incluent pas la propriété Left.D'un autre côté, q a été déclaré comme étant de type Label, aussi il peut utiliser toutes les méthodes et les propriétés de la classe Label dans l'espace de noms System.Windows.Forms.

s7fx2f23.collapse_all(fr-fr,VS.110).gifApproche correcte

Pour pouvoir accéder à tous les membres d'un objet d'une classe particulière, déclarez la variable objet comme étant du type de cette classe, si possible.Si vous ne pouvez pas procéder de la sorte, par exemple si vous ne connaissez pas le type d'objet au moment de la compilation, vous devez affecter à Option Strict la valeur Off et déclarer la variable comme étant de Object, type de données.Cela permet d'assigner des objets de n'importe quel type à la variable, et vous devez faire en sorte que l'objet actuellement assigné soit d'un type acceptable.Pour ce faire, vous pouvez utiliser TypeOf, opérateur (Visual Basic).

D'autres composants ne peuvent pas accéder à votre variable

Les noms Visual Basic ne respectent pas la casse.Si deux noms ne se distinguent que par la casse, le compilateur les interprète comme un seul et même nom.Il considère, par exemple, que ABC et abc font référence au même élément déclaré.

Néanmoins, le Common Language Runtime (CLR) utilise des liaisons qui respectent la casse.En conséquence, lorsque vous générez un assembly ou une DLL et que vous les mettez à la disposition d'autres assemblys, vos noms respectent alors la casse.Par exemple, si vous définissez une classe avec un élément appelé ABC et que d'autres assemblys utilisent votre classe via le Common Language Runtime, ils doivent faire référence à l'élément sous la forme ABC.Si, par la suite, vous recompilez votre classe et que vous changez le nom de l'élément en abc, les autres assemblys qui utilisent votre classe ne peuvent plus accéder à cet élément.Dès lors, lorsque vous libérez une version mise à jour d'un assembly, évitez de modifier la casse des éléments publics.

Pour plus d'informations, consultez Common Language Runtime (CLR).

s7fx2f23.collapse_all(fr-fr,VS.110).gifApproche correcte

Pour permettre à d'autres composants d'accéder à vos variables, considérez leurs noms comme s'ils respectaient la casse.Lorsque vous testez votre classe ou module, vérifiez que les autres assemblys se lient aux variables prévues.Une fois que vous avez publié un composant, ne modifiez pas les noms de variables existants, et notamment leurs casses.

Variable incorrecte utilisée

Lorsque plusieurs variables portent le même nom, le compilateur Visual Basic essaie de résoudre chaque référence à ce nom.Si les variables ont une portée différente, le compilateur résout une référence à la déclaration dont la portée est la plus petite.Si elles ont la même portée, la résolution échoue et le compilateur signale une erreur.Pour plus d'informations, consultez Références aux éléments déclarés (Visual Basic).

s7fx2f23.collapse_all(fr-fr,VS.110).gifApproche correcte

Évitez d'utiliser des variables qui ont le même nom, mais une portée différente.Si vous utilisez d'autres assemblys ou projets, évitez d'utiliser autant que possible des noms définis dans ces composants externes.Si plusieurs variables ont le même nom, n'oubliez pas de qualifier chaque référence à celui-ci.Pour plus d'informations, consultez Références aux éléments déclarés (Visual Basic).

Voir aussi

Tâches

Comment : accéder aux membres d'un objet (Visual Basic)

Comment : déterminer le type désigné par une variable objet (Visual Basic)

Concepts

Variables en Visual Basic

Déclaration de variable en Visual Basic

Variables objet dans Visual Basic

Déclaration des variables objets (Visual Basic)

Valeurs des variables objets (Visual Basic)

Références aux éléments déclarés (Visual Basic)

Noms d'éléments déclarés (Visual Basic)