Compartir a través de


Información general sobre conversión

Actualización: noviembre 2007

Cada valor tiene un tipo asociado, el cual define los atributos, como la cantidad de espacio asignado al valor, el intervalo de valores posibles que puede tener y los miembros que habilita. Muchos valores se pueden expresar como más de un tipo. Por ejemplo, el valor 4 se puede expresar como un entero o como un valor de punto flotante. La conversión crea un valor en un nuevo tipo que es equivalente al valor de un tipo antiguo, pero no conserva necesariamente la identidad (o valor exacto) de los dos objetos. Además de admitir la conversión implícita, .NET Framework admite la conversión explícita a través de la clase System.Convert, que proporciona métodos para convertir tipos.

Nota:

Los lenguajes también pueden proporcionar mecanismos para realizar conversiones explícitas. Por ejemplo, C# utiliza operadores de conversión, mientras que Visual Basic utiliza funciones de conversión implementadas por el compilador como CType, CInt y DirectCast.

Common Language Runtime admite la conversión de ampliación y la conversión de restricción. Por ejemplo, el valor que se representa como un entero de 32 bits con signo se puede convertir en un entero de 64 bits con signo. Éste es un ejemplo de conversión de ampliación. La conversión contraria (de 64 bits a 32 bits) es un ejemplo de conversión de restricción. Nunca se pierde información como resultado de una conversión de ampliación (aunque sí puede perderse precisión); sin embargo la conversión de restricción sí puede provocar una pérdida de información. Para obtener una lista de conversiones de ampliación, vea las Tablas de conversión de tipos.

En el siguiente ejemplo se muestra una conversión de ampliación, donde el valor Int32MyInt se convierte en un valor Int64. Esta conversión se lleva a cabo de manera implícita, sin utilizar la clase Convert ni ningún otro método u operador de conversión.

Dim MyInt As Integer = 1234567891
Dim MyBigInt As Long = MyInt
Console.WriteLine(MyBigInt)      ' Displays 1234567891
int MyInt = 1234567891;
long MyBigInt = MyInt;
Console.WriteLine(MyBigInt);           // Displays 1234567891

En el siguiente ejemplo se muestra una conversión de restricción, donde el valor Int64MyBigInt se convierte en un valor Int32. En C# este tipo de conversión de restricción siempre debe realizarse de forma explícita, mientras que en Visual Basic debe realizar de forma explícita si se activa Option Strict. En este ejemplo, se llama al método ToInt32 para realizar la conversión.

Dim MyBigInt As Long = 1234567891
' exception handler: narrowing conversions can overflow
Try
   Dim MyInt As Integer = Convert.ToInt32(MyBigInt)
   Console.WriteLine(MyInt)         ' Displays 1234567891
Catch e As OverflowException
   Console.WriteLine("Unable to convert {0} to an integer.", _ 
                     MyBigInt)      
End Try   
long MyBigInt = 1234567891;
// exception handler: narrowing conversions can overflow
try
{
   int MyInt = Convert.ToInt32(MyBigInt);
   Console.WriteLine(MyBigInt);        // Displays 1234567891
}
catch (OverflowException)
{
   Console.WriteLine("Unable to convert {0} to an integer.", 
                     MyBigInt);
}   

Vea también

Conceptos

Tablas de conversión de tipos

Convertir tipos de datos mediante System.Convert

Conversión explícita

Referencia

System.Convert

Otros recursos

Trabajar con tipos base