Share via


Conversión explícita

Algunos compiladores requieren la conversión explícita para admitir las conversiones de restricción. Es una manera específica del lenguaje de realizar conversiones. En algunos lenguajes, como C# y C++, la conversión explícita se realiza utilizando modelos. La conversión con moldes se produce cuando a una conversión se le pone un prefijo de un tipo de dato que define el tipo de conversión que se desea realizar. En Visual Basic, se usa la función CType para que se puedan realizar conversiones explícitas de tipos de datos que no se permiten de manera implícita. Aunque la mayoría de los lenguajes cuyo destino es Common Language Runtime admiten la conversión explícita, el mecanismo exacto es distinto de unos lenguajes a otros. Algunos lenguajes cuyo destino es Common Language Runtime pueden requerir que una conversión concreta se realice explícitamente, mientras que otros pueden permitir que la misma conversión se realice implícitamente. Consulte la documentación del lenguaje que esté utilizando para obtener más información sobre la conversión explícita.

Las conversiones explícitas se pueden realizar de manera comprobada o no comprobada. Si se realiza una conversión comprobada, se produce una OverflowException si el valor máximo del tipo de destino es menor que el valor del tipo que se está convirtiendo. Si se realiza una conversión no comprobada en las mismas circunstancias, el valor convertido podría no originar una excepción, pero no se puede definir cuál será el comportamiento exacto.

En C# y en algún otro lenguaje, se puede realizar una conversión no comprobada. En ese caso, se puede obtener un valor incorrecto, y no se producirá una OverflowException. El comportamiento de tales conversiones no se puede definir y no es de confianza. En el ejemplo de código siguiente se muestra una conversión C# no comprobada.

// The integer value is set to 2147483647.
int MyInt = int.MaxValue;
byte MyByte = (byte)Myint;
// The value of MyByte is 255, the maximum value of a Byte.
// No overflow exception is thrown.

En el siguiente ejemplo de código se muestra una conversión explícita en la que se utiliza la función CType en Visual Basic y la conversión comprobada en C#. En este ejemplo, el valor Double de 123456789 se convierte en un valor entero.

Dim MyDouble As Double = 123456789
Dim MyInt As Integer = CType(MyDouble, Integer)
' The value MyInt has the value 123456789. 
double MyDouble = 123456789;
int MyInt = checked ((int)MyDouble);
// The value MyInt has the value 123456789.

Tenga en cuenta que la conversión explícita puede tener distintos resultados en lenguajes distintos. Consulte la documentación del lenguaje que esté utilizando para obtener más información sobre el comportamiento de la conversión explícita. Por ejemplo, al convertir un valor Double en un valor Int32 en Visual Basic, si se utiliza la función CType, se efectúa un redondeo. Sin embargo, si se realiza la misma conversión utilizando la conversión explícita en C#, se pierden los valores decimales. En el siguiente ejemplo de código se utiliza la conversión explícita para convertir un valor double en un valor entero.

Dim MyDouble As Double = 42.72
Dim MyInt As Integer = CType(MyDouble, Integer)
' MyInt has the value of 43.
Double MyDouble = 42.72;
int MyInt = checked ((int)MyDouble);
// MyInt has the value of 42.

Vea también

Referencia

System.Convert

Otros recursos

Convertir tipos