C# – Declarando variáveis com o tipo dynamic2 min de leitura

Categoria: C#

Olá escavadores de bits!  Hoje, irei comentar sobre um recurso bem interessante do C#.NET : o tipo dynamic. Este recurso foi introduzido no Visual C# 2010 e fornece uma variável com tipo dinâmico, ou seja, você pode mudar o tipo da variável em runtime!

Como mudar o tipo de uma variável já declarada?

Parece estranho isso, mas na plataforma .NET isso é possível. Apesar de ser um recurso, a princípio interessante, não é recomendado você utilizar sempre este recurso, já que o programa perderá os benefício de verificação em tempo de compilação e também será muito mais lento. Além disso, por questões de segurança e qualidade no desenvolvimento de software, principalmente em equipes de desenvolvimento grande, é recomendado sempre a utilização de tipos definidos.

Exemplo: a “mágica” da definição de tipo em runtime

Abaixo você verá um código que mostra o funcionamento deste recurso. Copie e cole o código abaixo em um projeto Console Application:

static void Main(string[] args)
{
   dynamic variavelTipoDinamico = 0;

   Console.WriteLine("Eu sou do tipo:" + variavelTipoDinamico.GetType());

   variavelTipoDinamico = "CriarProgramas.com";

   Console.WriteLine("Mudei meu tipo:" + variavelTipoDinamico.GetType());

   Console.ReadKey();
}

Saída:

Observe que inicialmente a variável recebe o valor inteiro 0, e seu tipo é inteiro. Depois é atribuído a mesma variável uma string e seu tipo é alterado em tempo de execução. Observe também, que eu utilizei um método chamado GetType() (reflection) para capturar o tipo da variável, apesar do tipo dynamic não ter esse método.

Resumo

É um recurso interessante, mas que deve ser usado com cautela, já que uma variável de tipo dinâmico pode assumir qualquer valor de qualquer tipo que possamos imaginar e isso nem sempre e bom :-(.

Deixe um comentário

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

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.