Conversions C# Implicit Vs Explicit

Conversiones… Implícitas VS Explícitas?

Dotnetsafer
Dotnetsafer

Después de muchos años programando en .NET , es posible que ya te hayas dado cuenta de que el framework nos permite, de una forma muy sencilla , realizar conversiones entre diferentes tipos de datos.

Las conversiones pueden ser de 2 tipos 👇

  • Conversiones implícitas
  • Conversiones explícitas

Conversiones implícitas son para las que no es necesario indicar la conversión entre paréntesis (…) .

En el código asignamos una variable de tipo doble un valor de tipo int:

Pero el compilador no nos dice nada y nos deja seguir trabajando como si nada. Esto se conoce como conversión implícita .

En cambio, si hacemos lo siguiente 👇

El compilador nos dará un error indicando que no se puede realizar una conversión implícita de doble a int, y nos dice que usemos una conversión explícita .

No hay ningún misterio al respecto, simplemente este problema se puede solucionar poniendo (int) delante de 10.0 👇

Colocar el tipo de datos al que queremos convertirlo entre paréntesis se llama conversión explícita. Lo que esto significa es que con esta sintaxis estamos indicando explícitamente a el compilador que queremos convertir un tipo de datos en otro diferente.

En este punto, podría decirme perfectamente que esto también funcionaría 👇

Aparentemente, hace lo mismo que si no pusiéramos (doble) delante.

Entonces … ¿dónde está la diferencia? 🤔

La única diferencia entre conversiones implícitas y explícitas tiene que ver con si existe o no riesgo de que se pierda esa información.

Si pasamos al primer caso (sin paréntesis), es una conversión implícita . No importa el valor del int litetal como si escribiéramos doble ya que no habrá riesgo de perder la información por ser un tipo de mayor capacidad.

Por el contrario, si pasamos al segundo caso, nos vemos obligados a realizar una conversión explícita. Esto funciona porque un objeto doble puede contener valores que un tipo int de menor capacidad no puede representar.

Tomemos un ejemplo 👇


Cómo podemos crear nuestras propias conversiones

Por lo general, las conversiones del Framework son más que suficientes para las necesidades que surgen. Sin embargo, puede haber muchos casos en los que sería más útil definir nuestras propias conversiones implícitas y explícitas. La plataforma .NET nos proporciona una forma sencilla de hacerlo.

Para crear una conversión entre dos tipos, simplemente tenemos que escribir el operador correspondiente, ya sea implícito o explícito.

Vamos a crear un escenario imaginario en el que tenemos que gestionar las temperaturas para que los grados puedan cambiar entre Celsius y Fahrenheit .

Creemos el código 👇

Ahora con este código tenemos la posibilidad de escribir métodos para que hagamos la conversión entre ellos, y a los que llamamos cada vez.

Esto funciona, pero tendremos que llamar al método correspondiente cada vez y esto hace que el código sea muy complicado.

Si queremos hacer una conversión implícita , simplemente tenemos que definir un operador estático con el operador implícito estático.

Volvemos a nuestro ejemplo 👇

Podemos ver que a cada clase agregamos un operador conversión implícita para la otra clase relacionada, y después de eso, solo realizamos implícitamente las conversiones.

Lo que obtenemos de esto es un código mucho más limpio que cumple las condiciones para conversiones implícitas.

Si queremos hacerlo de otra manera… 🤔

  • Imaginemos que tenemos una aplicación que tiene que administrar a los profesores y alumnos de una escuela.

Veámoslo mejor 👇

Si en algún momento un alumno se convierte en profesor o viceversa, tendremos que utilizar una conversión para reutilizar los datos. Como en este caso, vamos a perder información ya que las diferentes clases no manejan la misma información.

Por lo tanto, la conversión deberá ser explícita 👇


✅ Conclusión:

Marcar una conversión como implícita o explícita debe cumplir estrictamente los criterios de si existe un riesgo de pérdida de información. Puede darse el caso de que hoy en día consideres insignificante la pérdida de información que se produce, pero que en algún momento no lo sea.

Si ha marcado la conversión como implícita , cualquiera que la use directamente asumirá que no hay pérdida de información.

Si hay más tarde y la falla está en esa conversión, puede ser un gran dolor de cabeza, más aún si el código es parte de una biblioteca y la persona que lo usa no puede ver el código. Desde Dotnetsafer le recomendamos que lo piense siempre antes de definir la conversión. 🤗

Summary
Conversiones… Implícitas VS Explícitas?
Article Name
Conversiones… Implícitas VS Explícitas?
Description
Después de muchos años programando en .NET, es posible que ya te hayas dado cuenta de que el framework nos permite, de una forma muy sencilla, realizar conversiones entre diferentes tipos de datos.
Author
Publisher Name
Dotnetsafer
Publisher Logo

0 Comments

Leave a Reply

More great articles

statistic cybersecurity

¿Cuál es la posibilidad de que una empresa sufra un ciberataque?7 cosas que debe saber sobre la CIBERSEGURIDAD para 2022

Cada vez que todo se digitaliza cada vez más, muchas empresas y pymes optan por redefinir y adaptar su modelo…

Read Story
devops

¿Aprender DevOps? Te doy 10 razones

Comencemos por definir qué significa DevOps: Dev (Desarrollo)Ops (Operaciones) Designa la unión de personas y tecnología para ofrecer valor a…

Read Story
C# 9 características y expectativas de C# 10

Características de C# 9.0 y expectativas de C# 10

La última versión de C#, 9.0, se lanzó oficialmente con .NET 5 en noviembre de 2020. En estos días ya…

Read Story
Arrow-up