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 valeur de la source, le type qui en résulte prend la valeur de la constante PositiveInfinity ou NegativeInfinity. La valeur de la constante PositiveInfinity est le résultat de la division d'un nombre positif par zéro et est retournée lorsque la valeur de type Single ou Double dépasse la valeur du champ MaxValue. La valeur de la constante NegativeInfinity est le résultat de la division d'un nombre négatif par zéro et est retournée lorsque la valeur de type Single ou 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. Cependant, si la valeur d'un type en cours de conversion tombe en dehors de la plage spécifiée par les champs MaxValue et MinValue du type cible et que la conversion est vérifiée par le runtime pour assurer que la valeur du type cible n'excède pas ses valeurs MaxValue ou MinValue, une exception OverflowException est levée. Les conversions effectuées avec la classe System.Convert sont toujours vérifiées de cette façon. Pour plus d'informations sur l'exécution de conversions vérifiées sans l'utilisation de System.Convert, consultez la section consacrée à la conversion explicite.

Le tableau suivant reprend les conversions qui lèvent une exception OverflowException en utilisant System.Convert ou toute autre conversion contrôlée si la valeur du type converti se situe en dehors de la plage définie du type qui en résulte.

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

Autres ressources

Conversion de types