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();