Partager via


Détermination du type Object (Visual Basic)

Les variables d’objet génériques (autrement dit, les variables que vous déclarez en tant que Object) peuvent contenir des objets de n’importe quelle classe. Lorsque vous utilisez des variables de type Object, vous devrez peut-être effectuer différentes actions en fonction de la classe de l’objet ; par exemple, certains objets peuvent ne pas prendre en charge une propriété ou une méthode particulière. Visual Basic fournit deux moyens de déterminer quel type d’objet est stocké dans une variable d’objet : la fonction TypeName et l’opérateur TypeOf...Is.

TypeName et TypeOf…Is

La fonction TypeName renvoie une chaîne et constitue le meilleur choix lorsque vous devez stocker ou afficher le nom de classe d’un objet, comme indiqué dans le fragment de code suivant :

Dim Ctrl As Control = New TextBox
MsgBox(TypeName(Ctrl))

L’opérateur TypeOf...Is est le meilleur choix pour tester le type d’un objet, car il est beaucoup plus rapide qu’une comparaison de chaînes équivalente à l’aide de TypeName. Le fragment de code suivant utilise TypeOf...Is dans une instruction If...Then...Else :

If TypeOf Ctrl Is Button Then
    MsgBox("The control is a button.")
End If

Une mise en garde s’impose ici. L’opérateur TypeOf...Is renvoie True si un objet est d’un type spécifique ou est dérivé d’un type spécifique. Presque tout ce que vous faites avec Visual Basic implique des objets, qui incluent certains éléments qui ne sont normalement pas considérés comme des objets, tels que des chaînes et des entiers. Ces objets sont dérivés de et héritent des méthodes de Object. Lorsqu’un Integer lui a été transmis et qu’il a été évalué avec Object, l’opérateur TypeOf...Is renvoie True. L’exemple suivant indique que le paramètre InParam est à la fois un Object et un Integer :

Sub CheckType(ByVal InParam As Object)
    ' Both If statements evaluate to True when an
    ' Integer is passed to this procedure.
    If TypeOf InParam Is Object Then
        MsgBox("InParam is an Object")
    End If
    If TypeOf InParam Is Integer Then
        MsgBox("InParam is an Integer")
    End If
End Sub

L’exemple suivant utilise à la fois TypeOf...Is et TypeName pour déterminer le type d’objet qui lui a été transmis dans l’argument Ctrl. La procédure TestObject appelle ShowType avec trois types de contrôles différents.

Pour exécuter l'exemple

  1. Créez un projet d’application Windows et ajoutez un contrôle Button, un contrôle CheckBox et un contrôle RadioButton au formulaire.

  2. À partir du bouton de votre formulaire, appelez la procédure TestObject.

  3. Ajoutez le code suivant à votre formulaire :

    Sub ShowType(ByVal Ctrl As Object)
        'Use the TypeName function to display the class name as text.
        MsgBox(TypeName(Ctrl))
        'Use the TypeOf function to determine the object's type.
        If TypeOf Ctrl Is Button Then
            MsgBox("The control is a button.")
        ElseIf TypeOf Ctrl Is CheckBox Then
            MsgBox("The control is a check box.")
        Else
            MsgBox("The object is some other type of control.")
        End If
    End Sub
    
    Protected Sub TestObject()
        'Test the ShowType procedure with three kinds of objects.
        ShowType(Me.Button1)
        ShowType(Me.CheckBox1)
        ShowType(Me.RadioButton1)
    End Sub
    

Voir aussi