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 da variável durante a compilação. Após a determinação, o tipo torna-se fixo e não pode ser alterado.
// O compilador determina o tipo 'int' para a variável number
var number = 10;
// number = "olá"; // Erro de compilação: não é possível converter string para int
dynamic é utilizado para indicar que a resolução de membros (métodos, propriedades, etc.) da variável será feita em tempo de execução, e não durante a compilação. Isso permite usar variáveis cujo tipo é desconhecido na compilação.
// O tipo da variável obj é determinado em tempo de execução
dynamic obj = "olá";
// Chamada de método que pode existir ou não no tipo string
var length = obj.Length;
obj = 10;
// Chamada de método que pode existir ou não no tipo int
// var result = obj.Substring(1); // Erro em tempo de execução, int não possui método Substring
Comparação:
| Característica | var | dynamic |
|---|---|---|
| Tipagem | Rígida (determinada pelo compilador) | Dinâmica (determinada em tempo de execução) |
| Resolução de membros | Em tempo de compilação (.) |
Em tempo de execução (.) |
| Verificação de erros | Em tempo de compilação | Em tempo de execução |
| Desempenho | Alto | Menor, devido aos custos adicionais de resolução dinâmica |
| Uso | Simplificação de sintaxe quando o tipo é evidente | Interação com APIs dinâmicas, COM, DLR |