C# Basics: Type Conversion

C

Si eres nuevo en el lenguaje o tal vez no tan nuevo, seguro que te has encontrado con una expresión de este tipo:

por poner uno de los casos más simples. Seguro que la primera vez que leíste “implicit conversion” tenías algunas dudas. Hoy te hablaré de los 4 formas de conversiones! Si son cuatro:

  1. Conversión Implícita
  2. Conversión Explícita
  3. Conversión definida por el usuario
  4. Conversión con una clase helper

 

Conversión Implícita-Implicit Conversion

Empecemos a desglosar la más simple de todas, llamamos conversión implícita cuando un tipo se convierte en otro de forma automática. Un ejemplo común es la conversión de una clase base a una clase derivada.

Es importante destacar que esta conversión puede ejecutarse porque el compilador sabe que es permitida y es segura de realizar. El valor de un entero puede almacenarse en un double sin perder ninguna precisión, Si intentamos hacer lo mismo de forma contrario, tendríamos un error, esto es porque para convertir un tipo  double a tipo int tendríamos que redondear el valor decimal lo que se traduce en pérdida de data.

 

 

Conversión Explícita-Explicit Conversión

El compilador de c# es tu amigo, por eso te protege de las conversiones implícitas que NO son seguras, así como cuando intentas convertir un tipo double to int. Sin embargo, cuando sea necesario hacer este tipo de conversiones siempre tendrás que agregar sintaxis a tu codigo para realizar una conversión explícita, a la cual suele llamársele casteo.

Como puedes hacer un casteo de tipo double a int? Así de simple:

Este casteo también puede aplicarse a clase derivadas como en el siguiente caso:

 

Conversión Definida por el usuario-User defined conversion

Si creas tus propios tipos, tu puedes añadir soporte para conversiones explícitas e implícitas. Un ejemplo que explica bastante bien este tipo de conversión es que si tenemos una clase que trabaja con diferentes monedas le llamaremos Money. Veamos que conversiones podemos agregar:

En este caso si trabajamos con la clase money, puedes usar una conversión implícita a tipo decimal y una explícita para tipo entero. ESto es usando las palabras claves implicit explicit con este tipo de método estático especial.

 

Conversiones con las clases Helper-class helper conversion

.NET framework es tu amigo, es por eso que te pone a tu alcance las clases helper para que realices tus conversiones. Incluso para convertir entre tipos no compatibles puedes usar System.BitConverter. Para los tipos compatibles puedes usar System.Convert y Parse o incluso TryParse. Veamos un ejemplo:

Ademá de mostrarte los tipos de conversiones, me gustaría hablarte de 2 operadores muy relacionados a este tema:

 

El operador “as”

En términos simple este operador es usado para hacer conversiones explícitas de un tipo a otro. Si la conversión fue exitosa, retornará el tipo esperado, de lo contrario retorna null.

El operador “is”

Es un operador de comparación entre tipos. Si los tipos son iguales retorna true de lo contrario retorna  false. Usualmente, este operador se usa en conjunto con una conversión explícita.

Conlusiones

  • Recuerda que las conversiones explícitas siempre necesitan una sinaxis extra para funcionar, se les suele llamar casteo.
  • Puedes crear tus propias conversiones explicitas  e implicitas.
  • La palabra clave as  es para castear a otro tipo y la palabra clave is, nos permite comparar entre tipos.

 

Hasta la próxima amigos, y que el brillo de este unicornio los ilumine!

Acerca del Autor

leslie.ramirez

Soy estudiante Ing. De tecnología de la Información y comunicación, tecnólogo superior en Desarrollo de Software. Me considero una persona innovadora y creativa, disfruto aprender cosas nuevas y desarrollar aplicaciones.

Entradas recientes

Categorías