Operador implícito en C#

Es muy común un escenario donde tenemos que mapear de una clase a otra, y en .NET podemos utilizar múltiples métodos, como puede ser casting o creando manualmente mappers para cada tipo.

 

En este post vamos a ver otra forma de conseguir nuestro objetivo final, convertir de un tipo a otro. Pero no entraremos en una discusión sobre qué elemento es mejor o peor. 

 

 

 

1 - Palabra clave implicit en C#

Como hemos mencionado, con un operador implícito podemos convertir de un tipo a otro. Para ello debemos hacer un método estático.

public struct Result<T>
{
    public static implicit operator Result<T>(T value) => new Result<T>(value, HttpStatusCode.Accepted);
}

A primera vista parece un método normal, que simplemente hace un mapeo, pero no lo es, y eso es debido a que no hay que instanciarlo o llamarlo cada vez que queremos hacer dicho mapeo, sino que se configura automáticamente en tiempo de compilación. 

 

 

2 - Ejemplo práctico

En el código, trabajamos con el tipo Result<T> en la cual hacemos uso del operador implícito. Desde nuestro tipo genérico T  a Result<T>

 

Esto qué quiere decir?

Significa que en nuestro código podemos convertir un valor T en Result<T> directamente asignando el valor:

int originalValue = 1;
Result<int> result = originalValue;

 

O el caso más común devolviendo como resultado de un método:

public Result<int> EjemploImplicitOperator()
{
    //Resto del código
    int simulacionResultado = 1;
    return simulacionResultado;
}

En ambos casos estamos convirtiendo un objeto int en Result<int> sin tener que crear o invocar un mapper o un casting, ya que se invoca de manera automática. 

 

 

Conclusión

En este post hemos visto cómo utilizar el operador implícito el cual es muy común ver en proyectos open source pero no en nuestro día a día laboral.


Uso del bloqueador de anuncios adblock

Hola!

Primero de todo bienvenido a la web de NetMentor donde podrás aprender programación en C# y .NET desde un nivel de principiante hasta más avanzado.


Yo entiendo que utilices un bloqueador de anuncios como AdBlock, Ublock o el propio navegador Brave. Pero te tengo que pedir por favor que desactives el bloqueador para esta web.


Intento personalmente no poner mucha publicidad, la justa para pagar el servidor y por supuesto que no sea intrusiva; Si pese a ello piensas que es intrusiva siempre me puedes escribir por privado o por Twitter a @NetMentorTW.


Si ya lo has desactivado, por favor recarga la página.


Un saludo y muchas gracias por tu colaboración

© copyright 2024 NetMentor | Todos los derechos reservados | RSS Feed

Buy me a coffee Invitame a un café