Partager via


Types valeur et types de référence

Il existe deux types de types dans Visual Basic : types de référence et types valeur. Les variables des types de référence stockent les références à 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 a sa propre copie des données et il n’est pas possible d’effectuer des opérations sur une variable pour affecter l’autre (sauf dans le cas du modificateur ByRef sur les paramètres).

Types valeur

Un type de données est un type valeur s’il contient les données dans son propre allocation de mémoire. Les types valeur incluent 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 de référence

  • Énumérations, car leur type sous-jacent est toujours SByte, , LongIntegerByteShort, , UShort, , UInteger, ouULong

Chaque structure est un type valeur, même s’il 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 New mot clé pour initialiser un type valeur. Cela est particulièrement utile si le type a un constructeur qui prend des paramètres. Par exemple, il s’agit du Decimal(Int32, Int32, Int32, Boolean, Byte) constructeur, qui génère une nouvelle Decimal valeur à partir des parties fournies.

Types référence

Un type référence stocke une référence à ses données. Les types de référence incluent les éléments suivants :

  • String

  • Tous les tableaux, même si leurs éléments sont des types valeur

  • 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.

Étant donné que chaque type de référence représente une classe .NET Framework sous-jacente, vous devez utiliser le mot clé New Operator lorsque vous l’initialisez. 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 qualifiés de 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 Object type de données. Une Object variable contient toujours une référence aux données, jamais les données elles-mêmes. Toutefois, si vous affectez un type valeur à une Object variable, il se comporte comme s’il contient ses propres données. Pour plus d’informations, consultez Type de données d’objet.

Vous pouvez déterminer si une Object variable agit comme un type référence ou un type valeur en le transmettant à la IsReference méthode dans la Information classe de l’espace Microsoft.VisualBasic de noms. Information.IsReference retourne True si le contenu de la Object variable représente un type de référence.

Voir aussi