Use Operadores Implícitos 1#
Use Operadores Implícitos 1#

Salve Dev, me chamo Jorel Magatti e sou Desenvolvedor c# .Net, aqui trago algumas implementações simples utilização de objetos do tipo Operador Implícito. Conforme a documentação o Operador implícito é uma operador de conversão, onde temos operadores implícitos usados naturalmente pela linguagem como temos operadores de conversão definidos pelo usuário, dentre estes operadores de conversão temos tanto os implícitos como o explícitos, neste artigo vou tratar somente do operador implícito e suas qualidades. Eu trabalho bastante com operadores implícitos em minhas entregas, principalmente como um mapping de dados, parecido ao usado no auto-mapper e similares, porem com código nativo do c#.
Operador de Conversão Implícita?
Operador de Conversão Implícita são maneiras de mostrar ao compilador como resolver a conversão entre formatos diferentes de dados de forma implícita (ou não expresso formalmente), deixando o código enxuto e mais limpo. Um exemplo nativo de conversão implícita usado diariamente em conversões de dados do tipo (int) para (double):

Operador de Conversão Implícita Definida pelo Usuário?
O C# nos dá a possibilidade de criar operadores implícitos para serem usados em conversões entre objetos compostos, para mostrar um exemplo de utilização do operador implicito definido pelo usuário, vou usar como exemplo uma conversão entre dois objetos onde na conversão entre eles, ele deve executar cálculos básico (soma, divisão …) retornando um outro tipo de objeto já com estes resultados em mãos, segue abaixo:
using System;
namespace ConsoleAppOperadoresImplicitos
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Operador Implícito Definido pelo Usua´rio!");
ValoresSemCalculo valoresParaCalcular = new ValoresSemCalculo()
{
valorA = 2,
valorB = 5,
};
ValoresCalculados calculado = valoresParaCalcular;
Console.WriteLine($" Valor Soma => {calculado.ValorSoma}");
Console.WriteLine($" Valor Subtração => {calculado.ValorSubtracao}");
Console.WriteLine($" Valor Multiplicação => {calculado.ValorMultiplicado}");
Console.WriteLine($" Valor Divisão => {calculado.ValorDivisao}");
Console.ReadKey();
}
}
public class ValoresSemCalculo
{
public int valorA { get; set; }
public int valorB { get; set; }
public static implicit operator ValoresCalculados(ValoresSemCalculo dados)
{
return new ValoresCalculados() {
valorA = dados.valorA,
valorB = dados.valorB,
ValorMultiplicado = dados.valorA * dados.valorB,
ValorSoma = dados.valorA + dados.valorB,
ValorDivisao = dados.valorA / dados.valorB,
ValorSubtracao = dados.valorA - dados.valorB
};
}
}
public class ValoresCalculados
{
public int valorA { get; set; }
public int valorB { get; set; }
public decimal ValorMultiplicado { get; set; }
public decimal ValorSoma { get; set; }
public decimal ValorDivisao { get; set; }
public decimal ValorSubtracao { get; set; }
}
}
Comentários
Postar um comentário