Tableaux de conversion de types
Mise à jour : novembre 2007
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. Si toutefois 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 ses MaxValue ou MinValue, un OverflowException est alors levé. 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 |