Compartir a través de


Convertir tipos de datos mediante System.Convert

Actualización: noviembre 2007

La clase System.Convert proporciona una serie completa de métodos para las conversiones compatibles. Proporciona una manera independiente del lenguaje para realizar conversiones, y está disponible para todos los lenguajes cuyo destino es Common Language Runtime. Si bien los distintos lenguajes pueden tener distintas técnicas para convertir tipos de datos, la clase Convert garantiza que todas las conversiones normales estén disponibles en un formato genérico. Esta clase realiza conversiones de ampliación y conversiones de restricción, así como conversiones en tipos de datos no relacionados. Por ejemplo, se admiten las conversiones de los tipos String a los tipos numéricos, de los tipos DateTime a los tipos String y de los tipos String a los tipos Boolean. Para obtener una lista de las conversiones disponibles, vea la lista de métodos de la clase Convert. La clase Convert realiza conversiones comprobadas y siempre produce una excepción si no se admite la conversión. La excepción suele ser una OverflowException. Para obtener una lista de conversiones admitidas, vea las Tablas de conversión de tipos.

Puede pasar el valor que desea convertir a uno de los métodos adecuados de la clase Convert e inicializar el valor devuelto en una nueva variable. Por ejemplo, en el código siguiente se usa la clase Convert para transformar un valor String en un valor Boolean.

Dim myString As String = "true"
Try
   Dim myBool As Boolean = Convert.ToBoolean(myString)
   Console.WriteLine(myBool)
Catch e As FormatException
   Console.WriteLine("{0} is not a Boolean value.", myString)
End Try   
' myBool has a value of True.
string myString = "true";
try
{
   bool myBool = Convert.ToBoolean(myString);
   Console.WriteLine(myBool);
}
catch (FormatException)
{
   Console.WriteLine("{0} is not a Boolean value.", myString);
}
// myBool has a value of True.

La clase Convert también resulta útil si se tiene una cadena que se desea convertir en un valor numérico. En el siguiente ejemplo de código se convierte una cadena que contiene caracteres numéricos en un valor Int32.

Dim newString As String = "123456789"
Try
   Dim myInt As Integer = Convert.ToInt32(newString)
   Console.WriteLine(myInt)
Catch e As FormatException
   Console.WriteLine("{0} does not represent a number.", newString)   
Catch e As OverflowException
   Console.WriteLine("{0} is out of range of the integer type.", _
                     newString)
End Try
' myInt has a value of 123456789.
string newString = "123456789";
try
{
   int myInt = Convert.ToInt32(newString);
   Console.WriteLine(myInt);
}
catch (FormatException)
{
   Console.WriteLine("{0} does not represent a number.", 
                     newString);   
}
catch (OverflowException)
{
   Console.WriteLine("{0} is out of range of the integer type.", 
                     newString);
}
// myInt has a value of 123456789.

La clase Convert se puede usar también para realizar una conversión de restricción que no se puede realizar de manera implícita en el lenguaje concreto que se está utilizando. En el ejemplo de código siguiente se muestra una conversión de restricción de un valor Int64 en un valor menor Int32 mediante el método Convert.ToInt32.

Dim myInt64 As Int64 = 123456789
Try
   Dim myInt As Integer = Convert.ToInt32(myInt64)
   Console.WriteLine(myInt)
Catch e As OverflowException
   Console.WriteLine("Unable to convert {0} to an integer.", _ 
                     myInt64)
End Try
' MyInt has a value of 123456789.
Int64 myInt64 = 123456789;
try
{
   int myInt = Convert.ToInt32(myInt64);
   Console.WriteLine(myInt);
}
catch (OverflowException)
{
   Console.WriteLine("Unable to convert {0} to a 32-bit integer.", 
                     myInt64);
}
// myInt has a value of 123456789.

A veces, si se realiza una conversión de restricción con la clase Convert, cambia el valor del elemento que se está convirtiendo En el siguiente ejemplo de código se convierte un valor Double en un valor Int32. En este caso, el valor se redondea de 42.72 a 43 para terminar de realizar la conversión.

Dim myDouble As Double = 42.72
Try
   Dim myInt As Integer = Convert.ToInt32(myDouble)
   Console.WriteLine(myInt)
Catch e As OverflowException
   Console.WriteLine("Unable to convert {0} to an integer.", myDouble)
End Try   
' MyInt has a value of 43.
Double myDouble = 42.72;
try 
{
   int myInt = Convert.ToInt32(myDouble);
   Console.WriteLine(myInt);
}
catch (OverflowException)
{
   Console.WriteLine("Unable to convert {0} to an integer.", myDouble);
}
// myInt has a value of 43.

Vea también

Conceptos

Conversión explícita

Otros recursos

Convertir tipos