
Conversiones de ampliación
La tabla siguiente muestra las conversiones de ampliación estándar.
Tipo de datos
|
Se amplía a los siguientes tipos de datos 1
|
|---|
SByte
|
SByte, Short, Integer, Long, Decimal, Single, Double
|
Byte
|
Byte, Short, UShort, Integer, UInteger, Long, ULong, Decimal, Single, Double
|
Short
|
Short, Integer, Long, Decimal, Single, Double
|
UShort
|
UShort, Integer, UInteger, Long, ULong, Decimal, Single, Double
|
Integer
|
Integer, Long, Decimal, Single, Double2
|
UInteger
|
UInteger, Long, ULong, Decimal, Single, Double 2
|
Long
|
Long, Decimal, Single, Double 2
|
ULong
|
ULong, Decimal, Single, Double 2
|
Decimal
|
Decimal, Single, Double 2
|
Single
|
Single, Double
|
Double
|
Double
|
Cualquier tipo enumerado (Enum)
|
Su tipo integral subyacente y cualquier tipo al que se amplía el tipo subyacente
|
Char
|
Char, String
|
Char array
|
Char array, String
|
Cualquier tipo
|
Object
|
Cualquier tipo derivado
|
Cualquier tipo básico del que se deriva 3
|
Cualquier tipo
|
Cualquier interfaz que implemente
|
Nothing
|
Cualquier tipo de datos o tipo de objeto
|
1 Por definición, cada tipo de datos se amplia a sí mismo.
2 Las conversiones de Integer, UInteger, Long, ULong o Decimal a Single o Double podrían generar una pérdida de precisión pero nunca una pérdida de magnitud. En este sentido, no provocan pérdida de información.
3 Puede parecer sorprendente que una conversión de un tipo derivado en uno de sus tipos básicos sea una ampliación. La justificación está en el hecho de que el tipo derivado contiene todos los miembros del tipo básico, por lo que se califica como una instancia del tipo básico. A la inversa, el tipo básico no contiene nuevos miembros definidos por el tipo derivado.
Las conversiones de ampliación son siempre satisfactorias en tiempo de ejecución y no provocan nunca pérdida de datos. Siempre puede realizarlas implícitamente, independientemente de si Option Strict (Instrucción) establece el modificador de comprobación de tipos en On o en Off.