Implémentation des types de données (Visual Basic)

Chaque type de données élémentaire de Visual Basic est pris en charge par une structure ou une classe dans l'espace de noms System. Le compilateur utilise chaque mot clé de type de données comme un alias pour la structure ou la classe sous-jacente. Par exemple, déclarer une variable avec le mot réservé Byte équivaut à la déclarer avec le nom de structure qualifié complet System.Byte.

En Visual Basic, les types de données sont implémentés en fonction de leur classification. Les types de données Visual Basic peuvent être classés selon qu'une variable d'un certain type stocke ses propres données ou un pointeur vers les données. Si elle enregistre ses propres données, il s'agit d'un type valeur ; si elle contient un pointeur vers les données stockées à un autre endroit de la mémoire, il s'agit d'un type référence.

Types valeur

Un type de données est un type valeur s'il contient des données dans l'espace qui lui est alloué en 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 référence

  • Les énumérations, dans la mesure où 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 comporte des membres de type référence. C'est pour cette raison que les types valeur tels que Char et Integer sont implémentés par les structures .NET Framework.

Vous pouvez déclarer un type valeur en utilisant le mot clé réservé (par exemple, Decimal). Vous pouvez également utiliser le mot clé New pour initialiser un type valeur. Cela s'avère particulièrement utile si le type possède un constructeur qui accepte des paramètres. Le constructeur Decimal(Int32, Int32, Int32, Boolean, Byte) en constitue un exemple ; il génère une nouvelle valeur Decimal à partir des parties fournies.

Types référence

Un type référence contient un pointeur vers un autre emplacement en mémoire contenant les 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 classe, tels que Form.

  • Délégués

Une classe est un type référence. C'est pour cette raison que les types référence comme Object et String sont pris en charge par les classes .NET Framework. Notez que chaque tableau est un type référence, même si ses membres sont des types valeur.

Étant donné que chaque type référence représente une classe du .NET Framework sous-jacente, vous devez utiliser le mot clé New, opérateur (Visual Basic) lorsque vous l'initialisez. L'instruction suivante initialise un tableau.

Dim totals() As Single = New Single(8) {}

D'autres types sont disponibles dans le .NET Framework

Le Common Language Runtime (CLR) prend également en charge des structures et des classes qui ne sont pas disponibles dans Visual Basic. Par exemple, la structure System.Guid fournit un identificateur global unique (GUID) et la classe System.TimeZone prend en charge un fuseau horaire. Vous pouvez utiliser ces types pour déclarer des variables et des constantes et vous pouvez accéder aux méthodes que le .NET Framework implémente sur ces types. Toutefois, Visual Basic ne prend pas en charge les opérations ni les conversions de type impliquant des types qu'il ne fournit pas.

É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 les spécifier comme 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 Object

Vous pouvez assigner au choix un type référence ou un type valeur à une variable de type de données Object. Une variable Object contient toujours un pointeur vers les données, jamais les données elles-mêmes. Toutefois, si vous assignez un type valeur à une variable Object, elle se comporte comme si elle contenait ses propres données. Pour plus d'informations, consultez Object, type de données.

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

Les types de données ont des membres

Étant pris en charge par les structures et les classes du .NET Framework, les types de données Visual Basic ont des membres. Ces membres incluent des constructeurs, des méthodes, des propriétés et des champs. Vous pouvez accéder aux membres (à l'exception des constructeurs) d'une variable comme vous accédez aux méthodes et propriétés d'un objet.

L'exemple suivant utilise les propriétés Year, Month et Day et la méthode DaysInMonth de la structure System.DateTime pour déterminer combien de jours il reste dans le mois actuel.

Dim current As Date = Now
Dim daysRemaining As Integer
daysRemaining = Date.DaysInMonth(current.Year, current.Month) - current.Day

Notez que vous devez qualifier une référence à un membre de type de données avec soit le nom du type (Date), soit le nom d'une variable déclarée comme étant de ce type (current).

Exemples de membres de types de données

Les prototypes de code suivants illustrent certains des champs, propriétés et méthodes qui peuvent être utilisés avec les types de données.

<Char>.IsDigit() ' Returns True if character is a numeric digit.

<Char>.IsLower() ' Returns True if character is a lowercase letter.

<Date>.IsLeapYear() ' Returns True if current year is a leap year.

<Date>.ToUniversalTime() ' Returns local date/time converted to UTC.

<Double>.IsInfinity() ' Returns True if contents represent infinity.

<Double>.IsNaN() ' Returns True if contents are not a number (0/0).

<Long>.MaxValue ' Constant representing largest positive Int64 value.

<Object>.GetType() ' Returns Type object representing type of <Object>.

<Object>.GetType().GetTypeCode() ' Returns type code of <Object>.

<String>.Chars(<index>) ' Character at position <index> of <String>.

<String>.Length ' Number of characters currently in <String>.

Tous les types numériques, y compris Byte et Char, exposent les champs publics MaxValue et MinValue, ce qui peut s'avérer très utile lors de l'utilisation de ces types de données.

L'équivalence des membres de types de données n'est pas assurée

Le .NET Framework fournit également plusieurs méthodes sur des types de données qui peuvent sembler équivalentes à des fonctions et des mots clés Visual Basic. Toutefois, Visual Basic n'utilise pas toujours les méthodes du .NET Framework pour accomplir la conversion ou d'autres opérations et les résultats ne sont pas toujours identiques.

Par exemple, la méthode ToSingle effectue le même type d'action que le mot clé CSng sur une expression Decimal. Mais il n'est pas garanti que CSng utilise System.dataType.ToSingle,et il n'est donc pas certain que les résultats soient identiques dans des conditions marginales ou limites.

En général, vous devez utiliser les éléments de programmation Visual Basic car ils sont plus faciles à utiliser et rendent votre code plus lisible. Dans quelques cas, une fonctionnalité supplémentaire peut être requise, et fournie par une méthode .NET Framework. Pour obtenir un exemple, consultez « L'opérateur Mod ne retourne pas de résultats exacts » dans Dépannage des types de données (Visual Basic).

Rubriques connexes

Terme

Définition

Types de données en Visual Basic

Introduit les types de données Visual Basic et décrit comment les utiliser.

Liste des types de données (Visual Basic)

Répertorie les types de données élémentaires disponibles dans Visual Basic.

Conversions de type en Visual Basic

Explique la conversion de type, qui est le processus consistant à remplacer une valeur d'un certain type de données par une valeur d'un autre type.

Structures (Visual Basic)

Décrit les structures, qui sont des types définis par l'utilisateur et déclarés avec le mot clé Structure.

Utilisation efficace des types de données (Visual Basic)

Explique comment accélérer l'exécution à l'aide des types de données.

Object, type de données

Décrit le type de données Object, qui peut être utilisé pour faire référence à des données de tout type.

Référence

Boolean

Byte

Char

DateTime

Decimal

Double

Guid

TimeZone