Guide complet des types de données C# : Valeur, Référence et Pointeur
Les variables en C# sont classées dans les types suivants :
- Types valeur
- Types référence
- Types pointeur
Type valeur
Les variables de type valeur peuvent se voir assigner une valeur directement. Elles dérivent de la classe System.ValueType.
Les types valeur contiennent directement les données. Quelques exemples sont int, char, et float, qui stockent respectivement des nombres, des caractères et des nombres à virgule flottante. Quand vous déclarez un type int, le système alloue de la mémoire pour stocker la valeur.
Le tableau suivant liste les types valeur disponibles en C# 2010 :
| Type | Représente | Plage | Valeur par défaut |
|---|---|---|---|
| bool | Valeur booléenne | True ou False | False |
| byte | Entier non signé 8 bits | 0 à 255 | 0 |
| char | Caractère Unicode 16 bits | U+0000 à U+ffff | '\0' |
| decimal | Valeurs décimales précises 128 bits avec 28-29 chiffres significatifs | (-7.9 x 1028 à 7.9 x 1028) / 100 à 28 | 0.0M |
| double | Type à virgule flottante double précision 64 bits | (+/-)5.0 x 10-324 à (+/-)1.7 x 10308 | 0.0D |
| float | Type à virgule flottante simple précision 32 bits | -3.4 x 1038 à +3.4 x 1038 | 0.0F |
| int | Type entier signé 32 bits | -2 147 483 648 à 2 147 483 647 | 0 |
| long | Type entier signé 64 bits | -9 223 372 036 854 775 808 à 9 223 372 036 854 775 807 | 0L |
| sbyte | Type entier signé 8 bits | -128 à 127 | 0 |
| short | Type entier signé 16 bits | -32 768 à 32 767 | 0 |
| uint | Type entier non signé 32 bits | 0 à 4 294 967 295 | 0 |
| ulong | Type entier non signé 64 bits | 0 à 18 446 744 073 709 551 615 | 0 |
| ushort | Type entier non signé 16 bits | 0 à 65 535 | 0 |
Pour obtenir la taille exacte d'un type ou d'une variable sur une plateforme particulière, vous pouvez utiliser la méthode sizeof. L'expression sizeof(type) renvoie la taille de stockage de l'objet ou du type en octets. Voici un exemple pour obtenir la taille du type int sur n'importe quelle machine :
using System; namespace DataTypeApplication { class Program { static void Main(string[] args) { Console.WriteLine("Taille de int: {0}", sizeof(int)); Console.ReadLine(); } } }
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :
Taille de int: 4
Type référence
Les types référence ne contiennent pas les données réelles stockées dans une variable, mais elles contiennent une référence vers les variables.
En d'autres termes, elles font référence à un emplacement mémoire. En utilisant plusieurs variables, les types référence peuvent faire référence à un emplacement mémoire. Si les données dans l'emplacement mémoire sont modifiées par l'une des variables, l'autre variable reflète automatiquement ce changement de valeur. Exemples de types référence intégrés : object, dynamic et string.
Type Objet
Le Type Objet est la classe de base ultime pour tous les types de données dans le Common Type System (CTS) de C#. Object est un alias pour la classe System.Object. Les types objet peuvent se voir assigner des valeurs de tout autre type, types valeur, types référence, prédéfinis ou définis par l'utilisateur. Cependant, avant d'assigner des valeurs, une conversion de type est nécessaire.
Quand un type valeur est converti en type objet, on appelle cela boxing et inversement, quand un type objet est converti en type valeur, on appelle cela unboxing.
object obj; obj = 100; // ceci est du boxing
Type Dynamique
Vous pouvez stocker n'importe quel type de valeur dans une variable de type dynamique. La vérification de type pour ces types de variables a lieu à l'exécution.
Syntaxe pour déclarer un type dynamique :
dynamic= value;
Par exemple :
dynamic d = 20;
Les types dynamiques sont similaires aux types objet sauf que la vérification de type pour les variables de type objet a lieu à la compilation, alors que pour les variables de type dynamique, elle a lieu à l'exécution.
Type Chaîne
Le Type Chaîne vous permet d'assigner n'importe quelle valeur de chaîne à une variable. Le type string est un alias pour la classe System.String. Il dérive du type objet. La valeur pour un type chaîne peut être assignée en utilisant des littéraux de chaîne sous deux formes : quoted et @quoted.
Par exemple :
String str = "Tutorials Point";
Un littéral de chaîne @quoted ressemble à ceci :
@"Tutorials Point";
Les types référence définis par l'utilisateur sont : class, interface, ou delegate. Nous discuterons de ces types dans un chapitre ultérieur.
Type Pointeur
Les variables de type pointeur stockent l'adresse mémoire d'un autre type. Les pointeurs en C# ont les mêmes capacités que les pointeurs en C ou C++.
Syntaxe pour déclarer un type pointeur :
type* identifier;
Par exemple :
char* cptr; int* iptr;
Nous discuterons des types pointeur dans le chapitre 'Codes Unsafe'.
Langue C
- 4 types d'entraînements à fente (slotted drives) pour fixations expliqués
- Thermocouples expliqués : Types, plages et comparaison performances
- Maîtriser les variables C# et types de données primitifs : guide complet
- Maîtriser la conversion de types en C# : Implicite, Explicite, Parse et méthodes Convert
- Comprendre les types de données C++ : Fondamentaux, modificateurs et bonnes pratiques
- Types de données en C expliqués : int, float, char et plus — Guide complet
- Maîtriser les types de données Python : Guide pratique
- Maîtriser la conversion et le transtypage de types en Python : Guide complet
- Types de données primitifs en Java : Guide complet avec exemples