English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C# est un langage fortement typé. Cela signifie que nous devons déclarer un type de variable, indiquant le type de valeur à stocker, par exemple, un entier, un nombre décimal, un texte, etc.
Les variables suivantes déclarent et initialisent des variables de différents types de données.
string stringVar = "Hello World!!"; int intVar = 100; float floatVar = 10.2f; char charVar = 'A'; bool boolVar = true;
C# divise principalement les types de données en deux catégories : types de valeurs et types de références. Les types de valeurs incluent les types simples (par exemple int, float, bool et char), les types de liste, les types de structure et les types de valeurs nullable. Les types de références incluent les types de classe, les types d'interface, les types de délégué et les types de tableau. Les types de valeurs et les types de références seront détaillés dans le prochain chapitre.
C# inclut certains types de valeurs prédéfinis et de types de références. Le tableau suivant liste les types de données prédéfinis :
Type | description | plage | suffixe |
---|---|---|---|
byte | 8 type de données unsigned integer en bits | de 0 à 255 | |
sbyte | 8 type de données signed integer en bits | -128 à 127 | |
short | 16 type de données signed integer en bits | -32,768 à 32,767 | |
ushort | 16 type de données unsigned integer en bits | de 0 à 65,535 | |
int | 32 type de données signed integer en bits | -2,147,483,648 à 2,147,483,647 | |
uint | 32 type de données unsigned integer en bits | de 0 à 4,294,967,295 | u |
long | 64 type de données signed integer en bits | -9,223,372,036,854,775,808 à 9,223,372,036,854,775,807 | l |
ulong | 64 type de données unsigned integer en bits | de 0 à 18,446,744,073,709,551,615 | ul |
float | 32 type de point flottant simple en bits | -3.402823e38 à 3.402823e38 | f |
double | 64 type de point flottant double en bits | -1.79769313486232e308 à 1.79769313486232e308 | d |
decimal | 128 valeur décimale précise en bits28-29 Nombre de décimales valides | (+ ou-)1.0 x 10e-28 à 7.9 x 10e28 | m |
char | 16 caractère Unicode | n'importe quel caractère valide, par exemple a,*, \x0058 (hex), ou\u0058 (Unicode) | |
bool | 8 true logique binaire/valeur false | True ou False | |
object | Classe de base de tous les types | ||
string | Séquence de caractères Unicode | ||
DateTime | représente la date et l'heure | 0:00:00am 1/1/01 à 11:59:59pm 12/31/9999 |
Comme indiqué dans le tableau suivant, chaque type de données (à l'exception des chaînes et des objets) contient une plage de valeurs. Si cette valeur dépasse la plage autorisée par le type de données, le compilateur affichera une erreur. Par exemple, la plage du type de données int est-2,147,483,648à2,147,483,647Par conséquent, si la valeur allouée n'est pas dans cette plage, le compilateur affichera une erreur.
Exemple : erreur à la compilation
// Erreur à la compilation : impossible de convertir implicitement le type 'long' en 'int'. int i = 21474836470;
Les valeurs des types de données unsigned integer, long, float, double et decimal doivent être respectivement suffixées par u, l, f, d et m.
uint ui = 100u; float fl = 10.2f; long l = 45755452222222l; ulong ul = 45755452222222ul; double d = 11452222.555d; decimal mon = 1000.15m;
Les types de données prédéfinis sont des alias des noms des types .NET (classes CLR). Le tableau suivant liste les alias des types de données prédéfinis et les noms des classes .NET associées.
Alias | Types .NET | Type |
---|---|---|
byte | System.Byte | struct |
sbyte | System.SByte | struct |
int | System.Int32 | struct |
uint | System.UInt32 | struct |
short | System.Int16 | struct |
ushort | System.UInt16 | struct |
long | System.Int64 | struct |
ulong | System.UInt64 | struct |
float | System.Single | struct |
double | System.Double | struct |
char | System.Char | struct |
bool | System.Boolean | struct |
object | System.Object | Class |
string | System.String | Class |
decimal | System.Decimal | struct |
DateTime | System.DateTime | struct |
Cela signifie que peu importe si vous définissez int ou Int32les variables sont les mêmes.
int i = 345; Int32 i = 345;// comme ci-dessus
Les valeurs de certains types de données sont automatiquement converties en différents types de données en C#. Cela s'appelle une conversion implicite.
int i = 345; float f = i; Console.WriteLine(f); //Sortie :345
Dans l'exemple ci-dessus, la valeur de la variable entière i est assignée à la variable de type float f, car cette opération de conversion est prédéfinie en C#.
Voici le tableau des conversions de types de données implicites.
conversion implicite | jusqu'à |
---|---|
sbyte | short, int, long, float, double decimal |
byte | short, ushort, int, uint, long, ulong, float, double, decimal |
short | int, long, float, double ou decimal |
ushort | int, uint, long, ulong, float, double ou decimal |
int | long, float, double ou decimal. |
uint | long, ulong, float, double ou decimal |
long | float, double ou decimal |
ulong | float, double ou decimal |
char | ushort, int, uint, long, ulong, float, double ou decimal |
float | Double |
La conversion de int, uint, long ou ulong en float, ainsi que la conversion de long ou ulong en double peut entraîner une perte de précision. Il n'y a pas de conversion implicite vers le type char.
Mais, tous les types de données ne peuvent pas se convertir implicitement en d'autres types de données. Par exemple, le type int ne peut pas se convertir implicitement en uint. Il doit être spécifié explicitement, comme suit.
public static void Main() { int i = 100; uint u = (uint) i; Console.Write(i); }
Dans l'exemple ci-dessus, l'entier i est explicitement converti en uint en spécifiant uint dans les crochets (uint). Cela convertit l'entier en uint.