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 :

TypeDescriptionPortéeValeur par défaut
boolValeur booléenneVrai ou FauxFalse
octetEntier non signé 8 bits0 à 2550
charCaractères Unicode 16 bitsU+0000 à U+ffff'\0'
decimalValeurs décimales précises sur 128 bits, avec 28-29 chiffres significatifs(-7.9 x 1028à 7.9 x 1028) / 100 à 28 0.0M
doubletype à virgule flottante double précision 64 bits(+/-)5.0 x 10-324à (+/-)1.7 x 103080.0D
floattype à virgule flottante simple précision 32 bits-3.4 x 1038à + 3.4 x 10380.0F
inttype entier signé 32 bits-2,147,483,648 à 2,147,483,6470
longtype entier signé 64 bits-9,223,372,036,854,775,808 à 9,223,372,036,854,775,8070L
sbytetype entier signé 8 bits-128 à 1270
shorttype entier signé 16 bits-32,768 à 32,7670
uinttype entier non signé 32 bits0 à 4,294,967,2950
ulongtype entier non signé 64 bits0 à 18,446,744,073,709,551,6150
ushorttype entier non signé 16 bits0 à 65,5350

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

using System;

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