Partager via


Types intégrés (référence C#)

Le tableau suivant répertorie les types valeur C# intégrés par catégorie :

Mot clé de type C# Type .NET
bool System.Boolean
byte System.Byte
sbyte System.SByte
char System.Char
decimal System.Decimal
double System.Double
float System.Single
int System.Int32
uint System.UInt32
nint System.IntPtr
nuint System.UIntPtr
long System.Int64
ulong System.UInt64
short System.Int16
ushort System.UInt16

Le tableau suivant répertorie les types référence C# intégrés par catégorie :

Mot clé de type C# Type .NET
object System.Object
string System.String
delegate System.Delegate
dynamic System.Object

Dans les tableaux précédents, le mot clé de type C# de la colonne gauche (sauf délégué et dynamique) est un alias pour le type .NET correspondant. Ils sont interchangeables. Par exemple, les déclarations suivantes déclarent des variables du même type :

int a = 123;
System.Int32 b = 123;

Le type dynamic est similaire à object. Les principales différences sont les suivantes :

  • Les opérations sur une expression dynamic sont liées au moment de l’exécution, et non au moment de la compilation.
  • Vous ne pouvez pas utiliser new dynamic().
  • Vous ne pouvez pas dériver un type du type dynamic.

Le mot clé delegate déclare un type dérivé de System.Delegate. Le type System.Delegate est un type abstrait.

Le mot clé void représente l’absence d’un type. Vous l’utilisez comme type de retour d’une méthode qui ne retourne pas de valeur.

Le langage C# inclut des règles spécialisées pour les types System.Span<T> et System.ReadOnlySpan<T>. Ces types ne sont pas classés comme des types intégrés, car il n’existe pas de mots clés C# qui correspondent à ces types. Le langage C# définit des conversions implicites à partir de types de tableaux et du type de chaîne en Span<T> et ReadOnlySpan<T>. Ces conversions intègrent les types Span dans des contextes de programmation plus naturels. Les conversions suivantes sont définies comme étant des conversions span implicites :

  • À partir de n’importe quel tableau unidimensionnel avec un type d’élément E à System.Span<E>
  • Depuis n'importe quel tableau unidimensionnel dont le type d'élément est E vers System.ReadOnlySpan<U>, lorsque E a une conversion par covariance ou une conversion d'identité vers U.
  • De System.Span<E> vers System.ReadOnlySpan<U>, lorsque E a une conversion de covariance ou une conversion d’identité vers U
  • De System.ReadOnlySpan<E> à System.ReadOnlySpan<U>, lorsque E subit une conversion de covariance ou une conversion identitaire vers U.
  • De string à System.ReadOnlySpan<char>

Le compilateur n’ignore jamais toute conversion définie par l’utilisateur lorsqu'il existe une conversion de portée implicite applicable . Les conversions d’étendue implicites peuvent être appliquées au premier argument des méthodes d’extension , le paramètre avec le modificateur this. Les conversions d’étendue implicites ne sont pas prises en compte pour les conversions de groupes de méthodes.

Voir aussi