Types valeur et types référence
Il existe deux sortes de types en Visual Basic : les types référence et les types valeur. Les variables des types référence font référence à leurs données (objets), tandis que les variables des types valeur contiennent directement leurs données. Avec les types référence, deux variables peuvent faire référence au même objet ; par conséquent, les opérations sur une variable peuvent affecter le même objet référencé par l'autre variable. Avec les types valeur, chaque variable possède sa propre copie de données, et les opérations sur une variable ne peuvent pas affecter l’autre copie (sauf pour le modificateur ByRef sur les paramètres).
Types valeur
Un type de données est un type valeur s’il contient les données dans sa propre allocation de mémoire. Les types valeurs comprennent les éléments suivants :
Tous les types de données numériques
Boolean
,Char
etDate
Toutes les structures, même si leurs membres sont des types référence
Les énumérations, car leur type sous-jacent est toujours
SByte
,Short
,Integer
,Long
,Byte
,UShort
,UInteger
, ouULong
Chaque structure est un type valeur, même si elle contient des membres de type référence. Pour cette raison, les types valeur tels que Char
et Integer
sont implémentés par les structures .NET Framework.
Vous pouvez déclarer un type valeur à l’aide du mot clé réservé, par exemple Decimal
. Vous pouvez également utiliser le mot clé New
pour initialiser un type valeur, ce qui est particulièrement utile si le type a un constructeur qui prend des paramètres. Le constructeur Decimal(Int32, Int32, Int32, Boolean, Byte), qui génère une nouvelle valeur Decimal
à partir des parties fournies, en est un exemple.
Types référence
Un type référence enregistre une référence à ses données. Les types référence incluent les éléments suivants :
String
Tous les tableaux, même si leurs éléments sont des types valeur
Les types de classes, tels que Form
Délégués
Une classe est un type référence. Notez que chaque tableau est un type référence, même si ses membres sont des types valeur.
Comme chaque type référence représente une classe .NET Framework sous-jacente, vous devez utiliser le mot clé New Operator lors de l’initialisation. L’instruction suivante initialise un tableau.
Dim totals() As Single = New Single(8) {}
Éléments qui ne sont pas des types
Les éléments de programmation suivants ne sont pas considérés comme des types, car vous ne pouvez pas les spécifier comme un type de données pour un élément déclaré :
Espaces de noms
Modules
Événements
Propriétés et procédures
Variables, constantes et champs
Utilisation du type de données d’objet
Vous pouvez affecter un type référence ou un type valeur à une variable du type de données Object
. Une variable Object
contient toujours une référence aux données, jamais les données elles-mêmes. Toutefois, si vous affectez un type valeur à une variable Object
, elle se comporte comme si elle contenait ses propres données. Pour plus d’informations, consultez Type de données d’objet.
Vous pouvez déterminer si une variable Object
agit comme un type référence ou un type valeur en la transmettant à la méthode IsReference de la classe Information de l’espace de noms Microsoft.VisualBasic. Information.IsReference retourne True
si le contenu de la variable Object
représente un type référence.