Share via


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

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

Ciertas conversiones de ampliación a Single o Double pueden provocar 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.

Type Se puede convertir en

Int32

Single

UInt32

Single

Int64

Single, Double

UInt64

Single, Double

Decimal

Single, Double

Conversiones de restricción

Una conversión de restricción a Single o Double puede provocar una pérdida de información. Si el tipo de destino no puede expresar correctamente la magnitud del origen, el tipo resultante se configura en las constantes PositiveInfinity o NegativeInfinity. El valor de PositiveInfinity es el resultado de dividir un número positivo por cero y se obtiene cuando el valor de Single o Double es mayor que el valor del campo MaxValue. El valor de NegativeInfinity es el resultado de dividir un número negativo por cero y se obtiene cuando el valor de Single o Double es menor que el valor del campo MinValue. Una conversión de Double a Single podría dar como resultado 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, si el valor de un tipo que se está convirtiendo está fuera del intervalo que se especifica en 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 sobrepasa su MaxValue o MinValue, se produce una OverflowException. Las conversiones que se realizan con la clase System.Convert siempre se comprueban de esta forma. Para obtener información sobre cómo realizar conversiones comprobadas sin usar System.Convert, vea la sección acerca de conversión explícita.

En la tabla siguiente se enumeran las conversiones que producen una OverflowException utilizando System.Convert o todas las conversiones comprobadas si el valor del tipo que se está convirtiendo está fuera del intervalo definido del tipo resultante.

Type Se puede convertir 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

Vea también

Referencia

System.Convert

Otros recursos

Convertir tipos