Tablas de conversión de tipos en .NET
Una conversión de ampliación se produce cuando se convierte un valor de un tipo a otro tipo que es de igual o mayor tamaño. Una conversión de restricción se produce cuando se convierte un valor de un tipo a otro tipo que es de un tamaño menor. En las tablas de este tema se muestran los comportamientos de ambos tipos de conversiones.
Conversiones de ampliación
En la tabla siguiente se describen las conversiones de ampliación que pueden realizarse sin pérdida de información.
Tipo | Se puede convertir sin pérdida de datos a |
---|---|
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, UInt64, Double, Decimal |
Int64 | Decimal |
UInt64 | Decimal |
Single | Double |
Algunas 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 a veces se traducen en una pérdida de información.
Tipo | Se puede convertir a |
---|---|
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 establece en la constante PositiveInfinity
o NegativeInfinity
. PositiveInfinity
resulta al dividir un número positivo por cero y también se devuelve cuando el valor de Single o Double supera el valor del campo MaxValue
. NegativeInfinity
resulta al dividir un número negativo por cero y también se devuelve cuando el valor de Single o Double cae por debajo del valor del campo MinValue
. Una conversión de Double a Single podría dar lugar a PositiveInfinity
o NegativeInfinity
.
Una conversión de restricción también puede traducirse en una pérdida de información para otros tipos de datos. Pero se inicia OverflowException si el valor de un tipo que se va a convertir 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 asegurarse de 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 manera.
En la tabla siguiente se enumeran las conversiones que inician OverflowException con System.Convert o cualquier conversión comprobada si el valor del tipo que se va a convertir está fuera del intervalo definido del tipo resultante.
Tipo | Se puede convertir a |
---|---|
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 |