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 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