Types valeur (Référence C#)

Mise à jour : novembre 2007

Les types valeur sont répartis en deux catégories principales :

Les struct sont répartis dans les catégories suivantes :

Principales fonctionnalités des types valeur

Les variables basées sur des types valeur contiennent directement des valeurs. L'attribution d'une variable de type valeur à une autre copie la valeur contenue. Cela est différent de l'assignation des variables de type référence, qui copient une référence vers l'objet mais pas l'objet lui-même.

Tous les types valeur sont dérivés implicitement de System.ValueType.

Contrairement aux types référence, il est possible de dériver un nouveau type à partir d'un type valeur. En revanche, comme les types référence, les types struct peuvent implémenter des interfaces.

Contrairement aux types référence, les types valeur ne peuvent pas contenir la valeur null. Toutefois, la fonctionnalité de types nullables permet d'assigner des types valeur à null.

Chaque type valeur possède implicitement un constructeur par défaut qui initialise la valeur par défaut du type associé. Pour plus d'informations sur les valeurs par défaut des types valeur, consultez Tableau des valeurs par défaut.

Principales fonctionnalités des types simples

Tous les types simples (qui font partie du langage C#) sont des alias des types .NET Framework System. Par exemple, int est un alias de System.Int32. Pour obtenir la liste complète des alias, consultez Tableau des types intégrés (Référence C#).

Les expressions constantes, dont les opérandes sont tous des constantes de type simple, sont évaluées au moment de la compilation.

Les types simples peuvent être initialisés à l'aide de littéraux. Par exemple, 'A' est un littéral du type char et 2001, un littéral du type int.

Initialisation des types valeur

En C#, les variables locales doivent être initialisées avant de pouvoir être utilisées. Par exemple, vous pouvez déclarer une variable locale sans l'initialiser, comme l'illustre l'exemple suivant :

int myInt;

vous ne pourrez pas l'utiliser tant qu'elle n'aura pas été initialisée. Vous pouvez initialiser la variable locale avec l'instruction suivante :

myInt = new int();  // Invoke default constructor for int type.

Cette instruction équivaut à l'instruction suivante :

myInt = 0;         // Assign an initial value, 0 in this example.

Vous pouvez bien sûr déclarer et initialiser la variable à l'aide d'une seule instruction, comme illustré ci-dessous :

int myInt = new int();

- ou -

int myInt = 0;

L'opérateur new appelle le constructeur par défaut associé au type spécifique, puis assigne la valeur par défaut à la variable. Dans l'exemple précédent, le constructeur par défaut a assigné la valeur 0 à la variable myInt. Pour plus d'informations sur les valeurs assignées par les constructeurs par défaut appelés, consultez Tableau des valeurs par défaut.

Pour les types définis par l'utilisateur, l'opérateur new permet d'appeler le constructeur par défaut. Par exemple, l'instruction suivante appelle le constructeur par défaut associé à l'objet Point de type struct :

Point p = new Point(); // Invoke default constructor for the struct.

Après l'appel, le type struct est considéré comme ayant été assigné, c'est-à-dire que tous ses membres sont initialisés à leur valeur par défaut respective.

Pour plus d'informations sur l'opérateur new, consultez new.

Pour plus d'informations sur les formats des résultats de types numériques, consultez Tableau des formats des résultats numériques.

Voir aussi

Concepts

Guide de programmation C#

Référence

Mots clés C#

Types référence (Référence C#)

Autres ressources

Référence C#

Types (Référence C#)

Tableaux de référence des types disponibles (Référence C#)