Object comme type de données universel
Mise à jour : novembre 2007
Le Object, type de données est le type racine dans le .NET Framework et dans Visual Basic. Cela signifie que tous les autres types de données et types d'objets sont dérivés de lui, directement ou non. Cela signifie également que tout autre type de données, élémentaire ou composite, peut être converti vers le type Object.
Typage faible
Vous pouvez utiliser Object comme type de données universel. C'est ce qu'on appelle le typage faible. L'exemple suivant illustre la souplesse du typage faible.
Dim v As Object
v = "17"
' v contains the 2-character String value "17".
v = v - 15
' v now contains the Integer value 2.
v = "H" & v
' v now contains the 2-character String value "H2".
Si vous pouvez effectuer de telles opérations sur des variables Object sans trop vous soucier du type des données qu'elles contiennent, il y a malgré tout des pièges à éviter :
Si vous effectuez des opérations ou des fonctions arithmétiques sur un Object, il doit contenir des données numériques sinon une erreur d'exécution se produit.
Si vous concaténez des chaînes, utilisez l'opérateur & à la place de l'opérateur +. Il y a des règles complexes qui déterminent quand l'opérateur + ajoute ses opérandes et quand il les concatène. L'opérateur + doit effectuer également une vérification et une conversion de type dans certains cas, ce qui réduit les performances.
Modification du type de données d'une variable objet
Bien qu'une variable Object accepte des données de tous types, vous ne pouvez pas modifier la variable elle-même en un type de données différent. Toutefois, vous pouvez redimensionner une variable Object en un tableau de variables Object. L'exemple suivant illustre l'utilisation valide et non valide de l'ReDim, instruction (Visual Basic).
' The following statement declares a single Object.
Dim someObj As Object
' The following reallocation is valid only for Object.
ReDim someObj(8)
' The following statement attempts an INVALID change of data type.
ReDim someObj(8) As Double
La première instruction ReDim change someObj en un tableau de type Object. Cette opération n'est correcte qu'avec le type de données Object. La seconde instruction ReDim est non valide, parce qu'elle fait intervenir un autre type de données. Vous pouvez obtenir l'effet souhaité en utilisant un tableau séparé. L'exemple suivant illustre ce comportement :
' First allocate a separate array.
Dim someArray(8) As Double
' Then assign the new array to the Object variable.
someObj = someArray
Object comme alternative à une structure
Étant donné que le type de données Object est capable d'enregistrer beaucoup de types de données différents, vous pouvez, dans de nombreux cas, utiliser un tableau Object à la place d'une structure. Un tableau Object offre un peu plus de souplesse qu'une structure, parce que vous pouvez à tout moment modifier le type des données enregistrées dans chaque élément et lui conférer un caractère dynamique afin de pouvoir le redimensionner à votre gré. Toutefois, un tableau Object utilise davantage de mémoire que la structure équivalente et ses performances sont ralenties.
Voir aussi
Concepts
Programmation sans type dans Visual Basic
Déclaration implicite et explicite
Vérification du type dans Visual Basic
Utilisation efficace des types de données
Déclaration des variables objets
Assignation des variables objets
Référence
Liste des types de données (Visual Basic)
Fonctions de conversion de types de données