C# · Intermediário · Inglês · Técnico
dynamic
Tipo cuja verificação de membros é adiada para a execução, via DLR. O compilador aceita qualquer chamada, e erros de membro inexistente só aparecem em runtime.
Onde usar
Aparece em interop com COM, ao lidar com JSON de formato desconhecido ou com ExpandoObject. Perde IntelliSense e checagem do compilador, então o uso deve ficar restrito a bordas bem delimitadas.
Em código
dynamic d = 5;
d += 10;
Console.WriteLine(d); // 15
d = "texto";
Console.WriteLine(d.Length); // 5
// d.Inexistente() só falha em runtimeExemplos
Avoid dynamic, it moves errors to runtime.
Evite dynamic, ele joga os erros para o runtime.
We use dynamic only for the COM interop.
Usamos dynamic só no interop com COM.
Cuidado
Não use como substituto de var: var é fortemente tipado e deduzido na compilação, enquanto dynamic só descobre o tipo ao rodar.
Antônimos
var