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 |
---|---|
UInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal |
|
UInt16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal |
|
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 |
---|---|
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 |
---|---|