Article image
Jefferson Mesquita
Jefferson Mesquita02/02/2024 18:38
Compartilhe

C# Records: A Evolução Necessária na Construção de Tipos Imutáveis e Eficientes

    Fala, galera! Hoje, vamos tentar falar um pouco sobre C# Records de maneira lúdica. Mas o que exatamente são e para que servem? 

    Os Records no C# são como superpoderes para programadores, surgindo no C# 9 para resolver um desafio: criar tipos que não mudam, algo como ter super-heróis com habilidades sempre iguais. Vamos explorar essa incrível evolução, como se estivéssemos construindo uma Liga da Justiça em código!

    Sintaxe Posicional para Definição de Propriedade

    Imagine criar um super-herói tão fácil quanto dizer quais são seus poderes. Com a sintaxe posicional, podemos definir propriedades sem complicações:

    public record SuperHeroi(string Nome, string Poder);
    

    Imutabilidade

    Super-heróis são imutáveis, e os Records também. Uma vez que criamos um herói, suas características não mudam, garantindo que nossos personagens mantenham suas habilidades originais:

    var homemDeFerro = new SuperHeroi("Homem de Ferro", "Inteligência e tecnologia");
    // As habilidades do Homem de Ferro permanecem as mesmas após a criação!
    

    Igualdade de Valor

    Se dois heróis têm as mesmas habilidades, são considerados iguais. Isso simplifica a comparação, como se tivéssemos dois super-heróis com poderes idênticos:

    var thor = new SuperHeroi("Thor", "Força e trovão");
    var thorClone = new SuperHeroi("Thor", "Força e trovão");
    Console.WriteLine(thor == thorClone); // true
    

    Mutação não destrutiva com with

    Os Records têm um poder chamado with, permitindo criar heróis aprimorados sem destruir os originais:

    public record SuperHeroiAprimorado : SuperHeroi
    {
      public string NovoPoder { get; init; }
    
    
      public SuperHeroiAprimorado ComNovoPoder(string poder) => this with { NovoPoder = poder };
    }
    

    Formatação Interna para Exibição

    A formatação interna dos Records facilita a visualização, como ter cartões de identificação claros para cada super-herói:

    var capAmerica = new SuperHeroi("Capitão América", "Força e escudo");
    Console.WriteLine(capAmerica); // SuperHeroi { Nome = Capitão América, Poder = Força e escudo }
    

    Exemplo Prático de uma DTO

    Em uma WebAPI, a DTO é como o uniforme dos super-heróis, simplificando a transmissão de informações pela internet:

    public record ProdutoDTO(string Nome, decimal Preco);
    
    
    // Em um controlador de API
    [ApiController]
    [Route("api/produtos")]
    public class ProdutosController : ControllerBase
    {
      [HttpGet("{id}")]
      public ActionResult<ProdutoDTO> ObterProduto(int id)
      {
          // Lógica para obter dados do produto
          var produto = ObterProdutoDoBancoDeDados(id);
    
    
          if (produto == null)
              return NotFound();
    
    
          var produtoDTO = new ProdutoDTO(produto.Nome, produto.Preco);
          return produtoDTO;
      }
    }
    

    Vantagem da Abordagem em Aplicações Modernas

    Usar Records em uma DTO em uma WebAPI agiliza a transmissão de dados, crucial em aplicações modernas. Com a simplicidade e eficiência dos Records, apenas as informações essenciais são enviadas pela rede, tornando a aplicação mais ágil.

    image

    Os Records do C# são verdadeiros aliados na construção de tipos imutáveis e eficientes. Incorporar essa evolução em nosso código é como equipar nossos super-heróis com novos poderes. Prepare-se para elevar seu código a níveis extraordinários!

    Siga-me no Linkedin para mais aventuras no universo da programação!

    ⚒️Ferrramentas de produção:

    Imagens geradas por: I.A. lexica.art

    Editor de imagem: Power Point e Photoshop

    Conteúdo gerado por: ChatGPT 

    Revisões Humanas: Jefferson Mesquita

    #.NET #Microsoft #Backend

    Compartilhe
    Comentários (0)