Sobes.tech
Middle

Qual é a diferença entre var e dynamic em C#?

sobes.tech IA

Resposta da IA

var é utilizado para tipagem implícita de variáveis locais. O compilador determina o tipo na fase de compilação.

dynamic é usado para trabalhar com objetos cujo tipo só é conhecido em tempo de execução. A verificação de tipo e a chamada de métodos ocorrem em tempo de execução.

Característica var dynamic
Tipificação Estática (compilação) Dinâmica (execução)
Verificação de tipo Em tempo de compilação Em tempo de execução
Desempenho Alto (tipo definido) Menor (requer análise em tempo de execução)
Restrições Apenas para variáveis locais Para variáveis, campos, propriedades, parâmetros
Aplicação Conveniência, redução de código Interação com COM, DLR, Reflection

Exemplo com var:

// O compilador determina que x é do tipo int
var x = 10;
// Erro de compilação, pois x está definido como int
// x = "olá";

Exemplo com dynamic:

// O tipo y é determinado em tempo de execução
dynamic y = 10;
// Não há erro de compilação, pois a verificação ocorre em tempo de execução
y = "olá";
// Chamada de método que pode não existir; o erro pode ocorrer em tempo de execução
// y.AlgumaMetodo();