Partager via


Tableaux de conversion de types

Une conversion étendue se produit lorsqu'une valeur d'un type est convertie en un autre type de taille égale ou supérieure. Une conversion restrictive se produit lorsqu'une valeur d'un type est convertie en une valeur d'un autre type de taille inférieure. Les tableaux de cette rubrique illustrent les comportements dont font preuve les deux types de conversion.

Conversions étendues

Le tableau suivant décrit les conversions étendues qui peuvent être effectuées sans perte d'information.

Type

Peut être converti sans perte de données en

Byte

UInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal

SByte

Int16, Int32, Int64, Single, Double, Decimal

Int16

Int32, Int64, Single, Double, Decimal

UInt16

UInt32, Int32, UInt64, Int64, Single, Double, Decimal

Char

UInt16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal

Int32

Int64, Double, Decimal

UInt32

Int64, Double, Decimal

Int64

Decimal

UInt64

Decimal

Single

Double

Certaines conversions étendues en valeurs Single ou Double peuvent entraîner une perte de précision. Le tableau suivant décrit les conversions étendues qui peuvent parfois entraîner une certaine perte d'information.

Type

Peut être converti en

Int32

Single

UInt32

Single

Int64

Single, Double

UInt64

Single, Double

Decimal

Single, Double

Conversions restrictives

Une conversion restrictive en Single ou Double peut entraîner une perte d'information. Si le type cible ne peut pas exprimer correctement la grandeur de la source, la valeur du type qui en résulte est celle de la constante PositiveInfinity ou NegativeInfinity. PositiveInfinity est le résultat de la division d'un nombre positif par zéro et est également retourné lorsque la valeur d'un Single ou d'un Double dépasse la valeur du champ MaxValue. NegativeInfinity est le résultat de la division d'un nombre négatif par zéro et est également retourné lorsque la valeur d'un Single ou d'un Double est inférieure à la valeur du champ MinValue. Une conversion d'un Double en un Single peut entraîner une valeur PositiveInfinity ou NegativeInfinity.

Une conversion restrictive peut également entraîner une perte d'informations pour d'autres types de données. Toutefois, un OverflowException est levé si la valeur d'un type en cours de conversion se situe en dehors de la plage spécifiée par les champs MaxValue et MinValue du type cible et que la conversion fait l'objet d'une vérification par le runtime pour s'assurer que la valeur du type cible ne dépasse pas sa valeur MaxValue ou MinValue. Les conversions qui sont effectuées avec la classe System.Convert sont toujours vérifiées de cette façon.

Le tableau suivant répertorie les conversions qui lèvent un OverflowException en utilisant System.Convert ou toute conversion contrôlée si le type converti se situe en dehors de la plage définie du type résultant.

Type

Peut être converti en

Byte

SByte

SByte

Byte, UInt16, UInt32, UInt64

Int16

Byte, SByte, UInt16

UInt16

Byte, SByte, Int16

Int32

Byte, SByte, Int16, UInt16,UInt32

UInt32

Byte, SByte, Int16, UInt16, Int32

Int64

Byte, SByte, Int16, UInt16, Int32,UInt32,UInt64

UInt64

Byte, SByte, Int16, UInt16, Int32, UInt32, Int64

Decimal

Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64

Single

Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64

Double

Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64

Voir aussi

Référence

System.Convert

Concepts

Conversion de type dans le .NET Framework