Partager via


Déclaration des variables objets (Visual Basic)

Utilisez une instruction de déclaration normale pour déclarer une variable objet. Pour le type de données, spécifiez soit Object (c'est-à-dire le Object, type de données) soit une classe plus spécifique à partir de laquelle l'objet doit être créé.

Déclarer une variable comme Object revient à la déclarer comme Object.

Lorsque vous déclarez une variable à l'aide d'une classe d'objet spécifique, elle peut accéder à toutes les méthodes et propriétés exposées par cette classe et les classes dont elle hérite. Si vous déclarez la variable à l'aide de Object, elle peut accéder uniquement aux membres de la classe Object, sauf si vous tournez Option Strict Off pour autoriser la liaison tardive.

Syntaxe de déclaration

Utilisez la syntaxe suivante pour déclarer une variable objet :

Dim variablename As [New] { objectclass | Object }

Vous pouvez spécifier également Public (Visual Basic), Protected (Visual Basic), Friend (Visual Basic), Protected Friend, Private (Visual Basic), Shared (Visual Basic) ou Static (Visual Basic) dans la déclaration. Les exemples de déclarations suivants sont valides :

Private objA As Object
Static objB As System.Windows.Forms.Label
Dim objC As System.OperatingSystem

Liaison tardive et liaison anticipée

Parfois, la classe spécifique n'est pas connue jusqu'à l'exécution du code. Dans ce cas, vous devez déclarer la variable objet à l'aide du type de données Object. Cette opération crée une référence générale à tout type d'objet, et la classe spécifique est assignée au moment de l'exécution. Cette situation s'appelle une liaison tardive. La liaison tardive requiert un temps d'exécution supplémentaire. Elle limite également votre code aux méthodes et aux propriétés de la classe qui lui ont été assignées le plus récemment. Cette situation peut provoquer des erreurs d'exécution si votre code tente d'accéder aux membres d'une classe différente.

Lorsque vous connaissez la classe spécifique au moment de la compilation, vous devez déclarer la variable objet de telle sorte qu'elle appartienne à cette classe. On appelle cela une liaison anticipée. La liaison anticipée améliore les performances et garantit l'accès de votre code à toutes les méthodes et propriétés de la classe spécifique. Dans les exemples de déclarations précédents, si la variable objA utilise uniquement des objets de classe Label, vous devez spécifier As System.Windows.Forms.Label dans sa déclaration.

Avantages de la liaison anticipée

La déclaration d'une variable objet en tant que classe spécifique présente plusieurs avantages :

  • Vérification automatique du type

  • Accès garanti à tous les membres de la classe spécifique

  • Prise en charge de Microsoft IntelliSense dans l'éditeur de code

  • Lisibilité améliorée de votre code

  • Réduction des erreurs dans votre code

  • Les erreurs sont interceptées au moment de la compilation plutôt qu'au moment de l'exécution

  • Exécution plus rapide du code

Accès aux membres des variables objets

Lorsque Option Strict a la valeur On, une variable objet ne peut accéder qu'aux méthodes et aux propriétés de la classe utilisée pour sa déclaration. L'exemple suivant illustre ce comportement.

' Option statements must precede all other source file lines.
Option Strict On
' Imports statement must precede all declarations in the source file.
Imports System.Windows.Forms
Public Sub accessMembers()
    Dim p As Object
    Dim q As System.Windows.Forms.Label
    p = New System.Windows.Forms.Label
    q = 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
End Sub

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.

Flexibilité des variables objets

Lorsque vous travaillez avec des objets dans une hiérarchie d'héritage, vous pouvez choisir la classe à utiliser pour la déclaration de vos variables objets. Lors de ce choix, vous devez comparer la flexibilité de l'assignation d'objets à l'accès aux membres d'une classe. Par exemple, examinez la hiérarchie d'héritage menant à la classe Form :

Object

    Component

      Control

        ScrollableControl

          ContainerControl

            Form

Supposons que votre application définisse une classe form appelée specialForm qui hérite de la classe Form. Vous pouvez déclarer une variable objet qui fait référence spécifiquement à specialForm comme le montre l'exemple suivant.

Public Class specialForm
    Inherits System.Windows.Forms.Form
    ' Insert code defining methods and properties of specialForm.
End Class
Dim nextForm As New specialForm

La déclaration de l'exemple précédent permet de limiter la variable nextForm aux objets de la classe specialForm, mais également de rendre toutes les méthodes et propriétés de specialForm disponibles pour nextForm ainsi que tous les membres de toutes les classes dont hérite specialForm.

Vous pouvez rendre une variable objet plus générale en la déclarant pour qu'elle soit du type Form comme le montre l'exemple suivant :

Dim anyForm As System.Windows.Forms.Form

La déclaration dans l'exemple précédent vous permet d'assigner tout formulaire dans votre application à anyForm. Toutefois, bien que anyForm puisse accéder à tous les membres de classe Form, il ne peut pas utiliser des méthodes supplémentaires ou des propriétés définies pour les formulaires spécifiques, tels que specialForm.

Tous les membres d'une classe de base sont disponibles pour les classes dérivées, mais les membres supplémentaires d'une classe dérivée ne sont pas disponibles pour la classe de base.

Voir aussi

Tâches

Comment : déclarer une variable objet et lui affecter un objet dans Visual Basic

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

Référence

New, opérateur (Visual Basic)

Option Strict, instruction

Concepts

Variables objet dans Visual Basic

Assignation des variables objets (Visual Basic)

Valeurs des variables objets (Visual Basic)

Inférence de type local (Visual Basic)