C# Types de données
En C#, les variables peuvent être réparties dans les types suivants :
- Types valeur
- Types référence
- Types pointeur
Types valeur
Les variables de type valeur peuvent se voir affecter directement une valeur. Elles sont dérivées de la classeSystem.ValueType.
est changé en "d", la valeur stockée dans l'espace mémoire 0X55 dans le "tas" est modifiée. Parce que l'adresse de a2 est la même que l'adresse de a1, le résultat de sortie est a b d.int、char、float, et ils stockent respectivement des nombres, des caractères et des nombres à virgule flottante. Lorsque vous déclarez uninttype, le système alloue de la mémoire pour stocker la valeur.
Le tableau suivant répertorie les types valeur disponibles en C# 2010 :
| Type | Description | Portée | Valeur par défaut |
|---|---|---|---|
| bool | Valeur booléenne | Vrai ou Faux | False |
| octet | Entier non signé 8 bits | 0 à 255 | 0 |
| char | Caractères Unicode 16 bits | U+0000 à U+ffff | '\0' |
| decimal | Valeurs décimales précises sur 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 spécifique, vous pouvez utilisersizeofMéthodes. Les expressionssizeof(type)produisent la taille de stockage d'un objet ou d'un type en octets. L'exemple suivant obtient [la taille] sur n'importe quelle machineintTaille de stockage des types :
Exemple
namespace DataTypeApplication
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Size of int: {0}", sizeof(int));
Console.ReadLine();
}
}
}
Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :
Size of int: 4
Types référence
Les types référence ne contiennent pas les données réelles stockées dans la variable, mais ils contiennent des références à la variable.
En d'autres termes, ils font référence à un emplacement mémoire. Lorsque plusieurs variables sont utilisées, les types référence peuvent pointer vers un emplacement mémoire. Si les données à cet emplacement mémoire sont modifiées par une variable, les autres variables refléteront automatiquement ce changement de valeur.Les types référence intégrésincluent :object、dynamicetstring。
Type objet
Type Objectest la classe de base ultime de tous les types de données dans le système de types commun (CTS) de C#. Object est un alias pour la classe System.Object. Par conséquent, le type object (Object) peut recevoir des valeurs de tout autre type (types valeur, types référence, types prédéfinis ou types définis par l'utilisateur). Toutefois, avant d'affecter une valeur, une conversion de type est nécessaire.
Lorsqu'un type valeur est converti en un type objet, cela s'appelleBoxing; d'autre part, lorsqu'un type objet est converti en un type valeur, cela s'appelleUnboxing。
object obj; obj = 100; // 这是装箱
Type dynamique
Vous pouvez stocker n'importe quel type de valeur dans une variable de type de données dynamique. La vérification des types pour ces variables se produit au moment de l'exécution.
Syntaxe de déclaration d’un type dynamique :
dynamic <variable_name> = value;
Par exemple :
dynamic d = 20;
Les types dynamiques sont similaires aux types objet, mais la vérification de type pour les variables de type objet se produit au moment de la compilation, tandis que la vérification de type pour les variables de type dynamique se produit au moment de l’exécution.
Type de chaîne
Le type chaîne de caractèresvous permet d’affecter n’importe quelle valeur de chaîne à une variable. Le type chaîne (String) est un alias de la classe System.String. Il dérive du type objet (Object). Les valeurs du type chaîne (String) peuvent être affectées sous deux formes : entre guillemets et entre guillemets @.
Par exemple :
String str = "example.com";
Une chaîne entre guillemets @ :
@"example.com";
En C#, une chaîne peut être précédée de @ (appelée « chaîne verbatim ») pour traiter les caractères d’échappement (\) comme des caractères ordinaires, par exemple :
string str = @"C:\Windows";
Équivalent à :
string str = "C:\\Windows";
Dans une chaîne @, vous pouvez couper les lignes arbitrairement ; les sauts de ligne et les espaces d’indentation sont tous comptés dans la longueur de la chaîne.
string str = @"<script type=""text/javascript"">
<!--
-->
</script>";
Les types référence définis par l’utilisateur comprennent : classe, interface ou délégué. Nous aborderons ces types dans les chapitres suivants.
Types pointeur
Les variables de type pointeur stockent l’adresse mémoire d’un autre type. Les pointeurs en C# ont les mêmes fonctionnalités que les pointeurs en C ou C++.
Syntaxe de déclaration d’un type pointeur :
type* identifier;
Par exemple :
char* cptr; int* iptr;
Nous aborderons les types pointeur dans le chapitre « Code unsafe ».
autres extensions