Convierte tipos de Datos en C#

Controlar los datos de tu aplicación es algo básico en la creación de una aplicación con C#. Para ello, C# nos proporciona distintas herramientas que podemos usar. En este tutorial, voy a enseñarte como aplicar correctamente las conversiones de tipos de datos segun tus necesidades.

Que aprenderás tras el tutorial?

  • Aprenderás a usar el operador de casteo para convertir un valor en otro tipo de dato.
  • Aprenderás a usar métodos de conversión para convertir un valor en otro tipo de dato.
  • Aprenderás a usar el método TryParse() para convertir una String en un número.

Parse

El uso del Parse, es el siguiente:

Aquí si lo corremos ahora, puede funcionar correctamente y obtendremos como salida el numero 3.

El problema que tenemos es si introducimos un decimal, como por ejemplo 3.14 en la variable numeroTexto.

En este ultimo caso, obtendremos un error de system.FormatException debido a que no podemos guardar un decimal en el entero.

Para solventar esto, debemos hacer uso de try catch y manejar la excepción que se puede dar.

TryParse

Aunque TryParse es parecido a Parse en cuanto a resultado, maneja de forma distinta los errores. Este, en el caso anterior no haría saltar ninguna excepción editaria el valor si no se pudiera convertir y lo pondria a 0 como false. Pongamos el ejemplo:

En este caso el valor de numero1, es 0, debido a que el out sobrescribe la variable y al no poder insertar el valor de 3.14 ya que es un decimal, lo machaca y queda a 0. Por lo tanto, tal y como nos marca visualStudio la variable numero1, no parece usarse. Es un error que puede suceder de hecho a que si se hace el TryParse nunca podrá conservar el mismo valor inicial, debido a que o sobreescribimos o machacamos y lo dejamos a 0.

Operadores de casteo

Sucede algo curioso cuando usamos los operadores de casteo, y es que intentan convertir siempre el numero. En este caso, hay lo que se llama conversión explicita por lo que estamos perdiendo información. Pongamos el ejemplo:

De 3.14 nos queda el 3.

Nota: como dato curioso, esto no se podria hacer en caso de que numeroTexto fuese una variable de tipo string, ya que nos daria error.

Clase Convert

La clase convert, aunque puede lanzar excepciones en casos de que un numero sea exageradamente grande o que la string que se le pase, sea de letras y se quiera convertir a numeros, nos puede ayudar en algunas ocasiones y es bastante utilizada.

Aquí se puede ver un ejemplo de su funcionamiento y como vemos, también hace uso de la conversión explicita.