.NET C# Dicas

Explorando o uso de variáveis dynamic no C#: boas práticas e exemplos de aplicação com JSON

O C# é uma linguagem de programação orientada a objetos que oferece aos desenvolvedores a capacidade de declarar variáveis de diferentes tipos, como inteiros, strings, booleanos, entre outros. Além desses tipos, o C# também oferece a opção de declarar variáveis do tipo dynamic.

O tipo dynamic é uma adição relativamente recente ao C#, tendo sido introduzido na versão 4.0 da linguagem em 2010. Essa variável é útil em situações em que o tipo da variável pode ser determinado em tempo de execução, em vez de ser conhecido em tempo de compilação. O tipo dynamic é particularmente útil quando trabalhando com APIs dinâmicas, como serviços da Web ou bases de dados NoSQL, onde a estrutura e o formato dos dados podem ser desconhecidos ou variáveis.

Para usar o tipo dynamic, basta declarar a variável com a palavra-chave “dynamic”. Em tempo de execução, o tipo da variável será determinado dinamicamente, com base no valor atribuído a ela.

Exemplo 1:

dynamic variavelDinamica = "um texto qualquer";
Console.WriteLine(variavelDinamica.Length); // Imprime o tamanho da string "um texto qualquer"
variavelDinamica = 10;
Console.WriteLine(variavelDinamica + 5); // Imprime 15

Neste exemplo, a variável variavelDinamica foi declarada como dynamic e inicializada com uma string. Em seguida, o comprimento da string foi impresso na tela usando a propriedade Length. Depois, a variável foi atualizada com um número inteiro e, em seguida, adicionado a outro número inteiro. Como o tipo da variável é determinado em tempo de execução, o compilador não emite um erro ao adicionar um valor inteiro a uma string.

Exemplo 2:

dynamic valorDinamico = 100;
var valorInteiro = 10;
Console.WriteLine(valorDinamico + valorInteiro); // Imprime 110
valorDinamico = "200";
Console.WriteLine(valorDinamico + valorInteiro); // Imprime 20010

Neste exemplo, a variável valorDinamico é inicializada com um valor inteiro de 100 e, em seguida, adicionada a uma variável valorInteiro do tipo int. Posteriormente, o valorDinamico é atualizado com uma string “200” e adicionado novamente a valorInteiro. Como o tipo da variável valorDinamico foi alterado em tempo de execução, o compilador converteu o valorInteiro em uma string e concatenou as duas strings.

Boas práticas no uso de variáveis dynamic

Embora as variáveis dynamic possam ser extremamente úteis em certas situações, elas também podem levar a problemas se usadas incorretamente. Aqui estão algumas boas práticas a serem consideradas ao usar variáveis dynamic:

  1. Evite o uso excessivo de variáveis dynamic, especialmente quando o tipo de dados é conhecido em tempo de compilação. Isso pode tornar o código mais difícil de ler e entender.
  2. Certifique-se de ter uma boa compreensão do tipo de dados que será armazenado na variável dynamic. Isso pode ajudar a evitar erros de tempo de execução.
  3. Certifique-se de que as bibliotecas que você está usando são compatíveis com variáveis dynamic e que o uso delas não viola nenhum contrato de interface ou API. Alguns frameworks podem não ser projetados para lidar com tipos dynamic e, portanto, podem causar erros.
  4. Evite atribuir valores nulos a variáveis dynamic, pois isso pode levar a exceções de tempo de execução.
  5. Se possível, tente evitar a conversão excessiva de tipos, pois isso pode afetar negativamente o desempenho do programa.

O uso de tipos dinâmicos é comumente recomendado ao trabalhar com dados JSON em C#. Isso ocorre porque, em muitos casos, as propriedades e os valores dentro de um objeto JSON podem ser desconhecidos ou variáveis, e o uso de tipos estáticos pode levar a erros de tempo de compilação.

Ao usar tipos dinâmicos, as propriedades e os valores do objeto JSON são determinados em tempo de execução, o que permite que o código seja mais flexível e adaptável a diferentes formatos de dados. Além disso, ao trabalhar com APIs RESTful ou outras fontes de dados externas, é comum que os dados JSON retornados possam mudar ou evoluir ao longo do tempo. Usar tipos dinâmicos torna mais fácil lidar com essas mudanças, permitindo que o código se adapte automaticamente a novas propriedades ou valores.

No entanto, é importante lembrar que o uso excessivo de tipos dinâmicos pode levar a códigos confusos e difíceis de manter. É sempre aconselhável tentar definir tipos mais específicos sempre que possível, especialmente quando as propriedades e valores do objeto JSON são conhecidos em tempo de compilação.

Aqui está um exemplo de como usar variáveis dynamic para lidar com dados JSON em C#:

{
    "name": "John Doe",
    "age": 30,
    "email": "johndoe@example.com",
    "phone": {
        "home": "555-1234",
        "work": "555-5678"
    }
}

Para lidar com esses dados em C#, podemos usar a classe Json.NET, que é uma das bibliotecas mais populares para trabalhar com JSON em .NET.

Primeiro, precisamos adicionar a biblioteca Json.NET ao nosso projeto. Podemos fazer isso por meio do NuGet ou adicionando manualmente a biblioteca ao projeto.

Em seguida, podemos usar o método JsonConvert.DeserializeObject() para converter a string JSON em um objeto dinâmico no C#:

using Newtonsoft.Json;

// String JSON de exemplo
string json = @"{
'name': 'John Doe',
'age': 30,
'email': 'johndoe@example.com',
'phone': {
'home': '555-1234',
'work': '555-5678'
}
}";

// Converter a string JSON em um objeto dynamic
dynamic data = JsonConvert.DeserializeObject(json);

Agora podemos acessar as propriedades do objeto JSON usando a notação de ponto e a variável dynamic:

// Acessando as propriedades do objeto dynamic
string name = data.name;
int age = data.age;
string email = data.email;
string homePhone = data.phone.home;
string workPhone = data.phone.work;

Observe que não precisamos definir uma classe ou um tipo específico para trabalhar com esses dados. Em vez disso, usamos uma variável dynamic para lidar com as propriedades e valores do objeto JSON.

Isso torna o código mais flexível e adaptável a diferentes formatos de dados JSON que possamos receber de uma API ou outra fonte de dados externa.

Conclusão

As variáveis dynamic no C# oferecem aos desenvolvedores uma maneira de lidar com tipos de dados que podem ser desconhecidos em tempo de compilação. Embora elas possam ser extremamente úteis em certas situações, é importante usar boas práticas para evitar erros de tempo de execução e manter o código legível e fácil de entender. Ao seguir essas práticas recomendadas, os desenvolvedores podem aproveitar ao máximo as variáveis dynamic no C# e escrever códigos mais flexíveis e robustos.

 

Esse artigo foi util para você ? Deixe um comentário como incentivo para continuarmos. Obrigado! E vamos codar!

 

 

Lucas Dalcolmo

About Author

Sou desenvolvedor de software a mais de 13 anos com experiência nacioanl e internacional. Já produzi softwares para grandes empresas no Brasil e também bancos em Portugal. Possuo as certificações microsoft AZ-900, DP-900, AI-900 e AZ-204 (azure developer associate). Sou fundador da Dallm Games Studio (@dallmgamesstudio) e fui mentor em vários eventos de desenvolvimento de jogos. Também fui mentor do NASA SPACE JAM 2024 na área de desenvolvimento de software.

1 Comment

  1. Leonardo Almeida

    13 de março de 2023

    👏👏👏

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Receba as últimas notícias por email

    Cadastre-se, receba nossas novidades em primeira mão por email, antes de todo mundo.

    Codeinsider @2025. Todos os direitos reservados.

    Desenvolvido por House Comunicação