bool
byte
char
decimal
double
enum
float
int
long
sbyte
short
struct
uint
ulong
ushort
Des chercheurs danois et suédois en sciences informatiques et systèmes autonomes ont décortiqué la sécurité...
Nvidia se prépare à livrer la plate-forme serveur HGX-2 qui sera capable d'exploiter la puissance de 16 GPU Tesla V100...
L'EMD, une école de commerce située à Marseille ouvre à la prochaine rentrée l'école du numérique...
int
peut contenir la valeur 42.
Ce type s'oppose au type référence, qui contient une référence à une instance du type, également appelée objet.
Lorsque vous affectez une nouvelle valeur à une variable d'un type valeur, cette valeur est copiée.
Si vous affectez une nouvelle valeur à une variable d'un type référence, la référence est copiée, et non l'objet lui-même.System.ValueType
.structs
peuvent implémenter des interfaces.null
par défaut.
Toutefois, les variables des types Nullable
correspondants peuvent être null
.byte
désigne un type intégral qui stocke des valeurs comme indiqué dans le tableau suivant.Type | Plage | Size | Type .NET |
---|---|---|---|
byte |
0 255 |
Entier 8 bits signé | System.Byte |
byte
en lui assignant un littéral décimal, hexadécimal ou binaire (à compter de C# 7.0).
Si le littéral entier est en dehors de la plage autorisée pour le type byte
(autrement dit, s'il est inférieur à Byte.MinValue
ou supérieur à Byte.MaxValue
),
une erreur de compilation se produit. Dans l'exemple suivant, les entiers égaux à 201 représentés comme des littéraux décimaux,
hexadécimaux et binaires sont implicitement convertis des valeurs int
en byte
.0x
ou 0X
pour désigner un littéral hexadécimal,
et le préfixe 0b
ou 0B
pour désigner un littéral binaire.
Les littéraux décimaux n'ont pas de préfixe.
char
permet de déclarer une instance de la structure System.Char
utilisée par le .NET Framework pour représenter un caractère Unicode.
La valeur d'un objet Char
est une valeur numérique 16 bits (ordinale).Unicode
sont utilisés pour représenter la plupart des langues écrites dans le monde.Type | Plage | Size | Type .NET |
---|---|---|---|
char |
U+0000 U+FFFF |
Caractère Unicode 16 bits | System.Char |
char
en ushort
, int
, uint
, long
, ulong
, float
, double
ou decimal
.
Par contre, vous ne pouvez pas convertir implicitement d'autres types en type char
.
Le type System.Char
fournit plusieurs méthodes statiques à utiliser avec des valeurs char
.
decimal
indique un type de données 128 bits.
Par rapport à d'autres types à virgule flottante, le type decimal
fournit une plus grande précision et une plage de valeurs plus réduite;
il est donc particulièrement approprié aux calculs financiers et monétaires.
Le tableau suivant indique la plage de valeurs approximative et la précision fournies par le type decimal.Type | Plage | Size | Type .NET |
---|---|---|---|
decimal |
±1,0 x 10-28 ±7,9228 x 1028 |
28-29 chiffres significatifs | System.Decimal |
decimal
est 0m
.decimal
,
utilisez le suffixe m
ou M
, comme indiqué ci-après :m
n'est pas spécifié, le nombre est considéré comme une valeur de type double
et génère une erreur du compilateur.decimal
et ont pour résultat une valeur de type decimal
.
Par conséquent, vous pouvez initialiser une variable de type decimal
avec un littéral d'entier, sans utiliser de suffixe, par exemple :decimal
et des types numériques intégraux.
En revanche, si vous combinez le type decimal
avec les autres types virgule flottante sans spécifier de cast, une erreur de compilation se produit.String.Format
,
ou de la méthode Console.Write
, qui appelle String.Format()
.
Le format monétaire est spécifié à l'aide du format de chaîne monétaire standard "C"
ou "c"
,
comme le montre l'exemple ci-dessous. x
est arrondie, car le nombre de décimales excède 0,99
.
La variable y
, représentant le nombre maximal exact de chiffres, est affichée dans le format correct.double
désigne un type simple qui stocke des valeurs à virgule flottante de 64 bits.Type | Plage | Size | Type .NET |
---|---|---|---|
double |
±5,0 x 10-324 ±1,7 x 10308 |
~15-17 chiffres | System.Double |
double
.
Toutefois, si vous souhaitez qu'un nombre entier soit traité comme double
, utilisez le suffixe d
ou D
, par exemple :double
, l'expression prend la valeur double
, ou bool
dans les comparaisons relationnelles et les comparaisons d'égalité.double
, elle prend la valeur float
, ou bool
dans les comparaisons relationnelles et les comparaisons d'égalité.int
, un short
, un float
et un double
sont ajoutés pour donner un résultat double
.enum
est utilisé pour déclarer une énumération.
Il s'agit d'un type distinct qui se compose d'un ensemble de constantes nommées, appelé liste d'énumérateurs.classe
ou un struct
.0
et chaque énumérateur successif est augmenté de 1
.
Par exemple, dans l'énumération suivante, Sat
est 0
, Sun
est 1
, Mon
est 2
, et ainsi de suite.Day
, est déclarée.
Deux énumérateurs sont explicitement convertis en entiers et affectés à des variables entières.
float
désigne un type simple qui stocke des valeurs à virgule flottante de 32 bits.float
.Type | Plage | Size | Type .NET |
---|---|---|---|
float |
±1,5 x 10-45 ±3,4 x 1038 |
~6-9 chiffres | System.Single |
double
.
Par conséquent, pour initialiser une variable de type float
, utilisez le suffixe f
ou F
, comme dans l'exemple suivant :double
dans une variable float
.double
, l'expression prend la valeur double
, ou bool
dans les comparaisons relationnelles ou les comparaisons d'égalité.double
dans l'expression, elle prend la valeur float
, ou bool
dans les comparaisons relationnelles ou les comparaisons d'égalité.int
, un short
et un float
sont inclus dans une expression mathématique produisant un résultat float
.
(N'oubliez pas que float
est un alias du type System.Single
.) Notez qu'il n'y a aucune valeur double
dans l'expression.
int
désigne un type intégral qui stocke des valeurs en fonction de la taille et de la plage indiquées dans le tableau suivant.Type | Plage | Size | Type .NET |
---|---|---|---|
int |
-2,147,483,648 2,147,483,647 |
Entier 32 bits signé | System.Int32 |
int
en lui assignant un littéral décimal, hexadécimal ou binaire (à compter de C# 7.0).
Si le littéral entier est en dehors de la plage autorisée pour le type int
(autrement dit, s'il est inférieur à Int32.MinValue
ou supérieur à Int32.MaxValue
), une erreur de compilation se produit.int
.0x
ou 0X
pour désigner un littéral hexadécimal, et le préfixe 0b
ou 0B
pour désigner un littéral binaire.
Les littéraux décimaux n'ont pas de préfixe.int
en long
, float
, double
ou decimal
. Par exemple :sbyte
, byte
, short
, ushort
ou char
en int
.
Par exemple, l'instruction d'assignation suivante génère une erreur de compilation sans cast
:int
.
Par exemple, l'instruction suivante génère une erreur du compilateur à moins qu'un cast
explicite soit utilisé :
long
désigne un type intégral qui stocke des valeurs en fonction de la taille et de la plage indiquées dans le tableau suivant.Type | Plage | Size | Type .NET |
---|---|---|---|
long |
-9 223 372 036 854 775 808 9 223 372 036 854 775 807 |
Entier 64 bits signé | System.Int64 |
long
en lui assignant un littéral décimal, hexadécimal ou binaire (à compter de C# 7.0).long
.0x
ou 0X
pour désigner un littéral hexadécimal,
et le préfixe 0b
ou 0B
pour désigner un littéral binaire.
Les littéraux décimaux n'ont pas de préfixe.
long
.
L'exemple suivant utilise le suffixe L
pour désigner un entier long
:
"l"
comme suffixe.
Ceci génère cependant un avertissement du compilateur, car la lettre "l"
peut être facilement confondue avec le chiffre "1"
.
Utilisez "L"
pour plus de clarté.
"L"
, le type du littéral entier est déterminé comme étant long
ou ulong
, en fonction de sa taille.
Dans ce cas, le type est long
, car le littéral est inférieur à la plage de ulong
.int
uint
long
ulong
float
, double
ou decimal
.
Dans le cas contraire, vous devez utiliser un cast.
Par exemple, l'instruction suivante génère une erreur de compilation sans un cast explicite :sbyte
, byte
, short
, ushort
, int
, uint
ou char
vers long
.
Notez aussi qu'il n'existe pas de conversion implicite des types virgule flottante vers long
.
Par exemple, l'instruction suivante génère une erreur du compilateur, sauf si vous utilisez un cast explicite :sbyte
désigne un type intégral qui stocke des valeurs en fonction de la taille et de la plage indiquées dans le tableau suivant.
Type | Plage | Size | Type .NET |
---|---|---|---|
sbyte |
-128 127 |
Entier 8 bits signé | System.SByte |
sbyte
en lui assignant un littéral décimal, hexadécimal ou binaire (à compter de C# 7.0).
Dans l'exemple suivant, les entiers égaux à -102 représentés comme des littéraux décimaux,
hexadécimaux et binaires sont convertis à partir de valeurs int
en valeurs sbyte
.
0x
ou 0X
pour désigner un littéral hexadécimal,
et le préfixe 0b
ou 0B
pour désigner un littéral binaire.
Les littéraux décimaux n'ont pas de préfixe.
sbyte
en short
, int
, long
, float
, double
ou decimal
.
Vous ne pouvez pas convertir implicitement des types numériques non littéraux de taille de stockage supérieure à sbyte
Considérons, par exemple, les deux variables sbyte
x
et y
suivantes :int
par défaut.sbyte
.
Par exemple, l'instruction suivante génère une erreur du compilateur,
sauf si vous utilisez un cast explicite :short
désigne un type de données intégral qui stocke des valeurs en fonction de la taille et de la plage indiquées dans le tableau suivant.Type | Plage | Size | Type .NET |
---|---|---|---|
short |
-32 768 32 767 |
Entier 16 bits signé | System.Int16 |
short
en lui assignant un littéral décimal, hexadécimal ou binaire (à compter de C# 7.0).
Si le littéral entier est en dehors de la plage autorisée pour le type short
(autrement dit, s'il est inférieur à Int16.MinValue
ou supérieur à Int16.MaxValue
),
une erreur de compilation se produit.0x
ou 0X
pour désigner un littéral hexadécimal,
et le préfixe 0b
ou 0B
pour désigner un littéral binaire.
Les littéraux décimaux n'ont pas de préfixe.
short
en int
, long
, float
, double
ou decimal
.
Vous ne pouvez pas convertir implicitement des types numériques non littéraux de taille de stockage supérieure à short
.
Prenez l'exemple des deux variables short x et y suivantes :
struct
est un type valeur utilisé pour encapsuler de petits groupes de variables liées, par exemple les coordonnées d'un rectangle ou
les caractéristiques d'un élément dans un inventaire. L'exemple suivant illustre une déclaration struct simple.uint
désigne un type intégral qui stocke des valeurs en fonction de la taille et de la plage indiquées dans le tableau suivant.Type | Plage | Size | Type .NET |
---|---|---|---|
uint |
0 4 294 967 295 |
Entier 32 bits signé | System.UInt32 |
uint
n'est pas conforme CLS. Utilisez int
autant que possible.uint
en lui assignant un littéral décimal, hexadécimal ou binaire (à compter de C# 7.0).
Si le littéral entier est en dehors de la plage autorisée pour le type uint
(autrement dit, s'il est inférieur à UInt32.MinValue
ou supérieur à UInt32.MaxValue
), une erreur de compilation se produit.
Dans l'exemple suivant, les entiers égaux à 3 000 000 000 représentés comme des littéraux décimaux, hexadécimaux et binaires sont assignés aux valeurs uint
.
0x
ou 0X
pour désigner un littéral hexadécimal,
et le préfixe 0b
ou 0B
pour désigner un littéral binaire. Les littéraux décimaux n'ont pas de préfixe.
uint
en long
, ulong
, float
, double
et decimal
. Par exemple :ulong
désigne un type intégral qui stocke des valeurs en fonction de la taille et de la plage indiquées dans le tableau suivant.Type | Plage | Size | Type .NET |
---|---|---|---|
ulong |
0 18 446 744 073 709 551 615 |
Entier 64 bits non signé | System.UInt64 |
ulong
en lui assignant un littéral décimal, hexadécimal ou binaire (à compter de C# 7.0).
Si le littéral entier est en dehors de la plage autorisée pour le type ulong
(autrement dit, s'il est inférieur à UInt64.MinValue
ou supérieur à UInt64.MaxValue
),
une erreur de compilation se produit. Dans l'exemple suivant, les entiers égaux à 7 934 076 125 représentés comme des littéraux décimaux, hexadécimaux
et binaires sont assignés aux valeurs ulong
.0x
ou 0X
pour désigner un littéral hexadécimal,
et le préfixe 0b
ou 0B
pour désigner un littéral binaire. Les littéraux décimaux n'ont pas de préfixe.
ulong
en float
, double
ou decimal
.ulong
en un type intégral.
Par exemple, l'instruction suivante génère une erreur de compilation sans cast explicite :byte
, ushort
, uint
ou char
en ulong
.ulong
.
Par exemple, l'instruction suivante génère une erreur du compilateur, sauf si vous utilisez un cast explicite :ushort
indique un type de données intégral qui stocke des valeurs selon la taille et la plage indiquées dans le tableau suivant.Type | Plage | Size | Type .NET |
---|---|---|---|
ushort |
0 65 535 |
Entier 16 bits non signé | System.UInt16 |
ushort
en lui assignant un littéral décimal, hexadécimal ou binaire (à compter de C# 7.0).
Si le littéral entier est en dehors de la plage autorisée pour le type ushort
(autrement dit, s'il est inférieur à UInt16.MinValue
ou supérieur à UInt16.MaxValue
), une erreur de compilation se produit.ushort
.0x
ou 0X
pour désigner un littéral hexadécimal,
et le préfixe 0b
ou 0B
pour désigner un littéral binaire. Les littéraux décimaux n'ont pas de préfixe.
int
, uint
, long
, ulong
, float
, double
ou decimal
.byte
ou char
en ushort
.
Sinon, vous devez utiliser un cast pour effectuer une conversion explicite.
Considérons, par exemple, les deux variables ushort
x
et y
suivantes :ushort
.
Par exemple, l'instruction suivante génère une erreur du compilateur, sauf si vous utilisez un cast explicite :