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 et Date

  • 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, ou ULong

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.

Voir aussi