Tablas de conversión de tipos
La conversión de ampliación se produce cuando un valor de un tipo se convierte en otro tipo de tamaño igual o mayor. La conversión de restricción se produce cuando un valor de un tipo se convierte en un valor de otro tipo de tamaño menor. Las tablas de este tema ilustran el comportamiento que presentan los dos tipos de conversión.
Conversiones de ampliación
En la tabla siguiente se describen las conversiones de ampliación que se pueden realizar sin pérdida de información.
Tipo |
Puede convertirse sin pérdida de datos en |
---|---|
UInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal |
|
UInt16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal |
|
Ciertas conversiones de ampliación a Single o Double pueden producir una pérdida de precisión. En la tabla siguiente se describen las conversiones de ampliación que pueden, en ocasiones, provocar una pérdida de información.
Tipo |
Se puede convertir en |
---|---|
Conversiones de restricción
Una conversión de restricción a Single o Double puede producir una pérdida de información. Si el tipo de destino no puede expresar correctamente la magnitud del origen, el tipo resultante se establece en la constante PositiveInfinity o NegativeInfinity. PositiveInfinity es el resultado de dividir un número positivo por cero y también se obtiene cuando el valor de Single o Double supera el valor del campo MaxValue. NegativeInfinity es el resultado de dividir un número negativo por cero y también se obtiene cuando el valor de Single o Double es menor que el valor del campo MinValue. Una conversión de un tipo Double a un tipo Single podría producir PositiveInfinity o NegativeInfinity.
Una conversión de restricción también puede producir una pérdida de información con otros tipos de datos. Sin embargo, se produce OverflowException si el valor de un tipo que se está convirtiendo está fuera del intervalo especificado por los campos MaxValue y MinValue del tipo de destino, y el tiempo de ejecución comprueba la conversión para garantizar que el valor del tipo de destino no supera su MaxValue o MinValue. Las conversiones que se realizan con la clase System.Convert siempre se comprueban de esta forma.
En la tabla siguiente se enumeran las conversiones que producen una OverflowException al usar System.Convert o alguna de las conversiones comprobadas si el valor del tipo que se va a convertir está fuera del intervalo definido del tipo resultante.
Tipo |
Se puede convertir en |
---|---|