Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 21258|Resposta: 0

[Fonte] Uso correto da dinâmica em C#

[Copiar link]
Publicado em 07/07/2016 10:15:06 | | |
dinâmica é uma nova funcionalidade do FrameWork 4.0. O surgimento da dinâmica deu ao C# as características de um tipo de linguagem fraco. O compilador não verifica mais o tipo em tempo de compilação, e o objeto dinâmico suporta qualquer recurso que você quiser por padrão durante a compilação. Por exemplo, mesmo que você não saiba nada sobre o objeto retornado pelo método GetDynamicObject, você pode fazer uma chamada de código assim, e o compilador não reportará um erro:




Quando se trata de uso correto, um uso errado deve ser apontado primeiro:

As pessoas frequentemente usam a palavra-chave var para comparar com dinâmica. Na verdade, var e dinâmica são completamente dois conceitos e não devem ser comparados juntos. Uma vez compilado, o tempo de compilação corresponde automaticamente ao tipo real da variável var e substitui a declaração da variável pelo tipo real, que parece que estamos declarando o tipo real ao codificar. Após a compilação dinâmica, ele é na verdade um tipo de objeto, mas o compilador fará um tratamento especial ao tipo dinâmico, de modo que não realiza nenhuma verificação de tipos durante a compilação, mas coloca a verificação de tipo no tempo de execução.

Isso pode ser visto na janela do editor no Visual Studio. Variáveis declaradas como vars suportam "sentido inteligente" porque o Visual Studio pode inferir o tipo real de tipos de var, enquanto variáveis declaradas como dinâmicas não suportam "sentido inteligente" porque o compilador não sabe nada sobre o tipo de seu tempo de execução. Usar o Intelligent Sense para variáveis dinâmicas indica "Esta ação será resolvida em tempo de execução".

O fato de a variável dinâmica ser uma variável objeto pode ser verificado pelo código IL, e o código IL não será postado aqui. Claro, o compilador também lida com declarações dinâmicas para distinguir entre variáveis de objeto diretas.

dinâmica é amplamente renderizada em MSDN para simplificar a interoperabilidade, e sinto que é com base nisso que alguns desenvolvedores são mal compreendidos: como muitos desenvolvedores não sabem usar códigos como COM+ e desenvolvimento secundário no OFFICE, eles precisam urgentemente de uma razão dinâmica para a aplicação. Então, no desenvolvimento diário, acho que dinâmico é valioso:

Conversão de tipos
A transição entre instâncias do tipo Dinâmico e outros tipos de instâncias é simples, e os desenvolvedores podem facilmente alternar entre comportamentos dinâmicos e não dinâmicos. Qualquer instância pode ser convertida implicitamente em uma instância do tipo dinâmico, veja o seguinte exemplo:
dinâmica d1 = 7;
dinâmica d2 = "uma corda";
dinâmica d3 = System.DateTime.Today;
dinâmico d4 = System.Diagnostics.Process.GetProcesses();
Por outro lado, uma conversão implícita pode ser aplicada dinamicamente a qualquer expressão de dinâmica de tipos.
E vice-versa, qualquer expressão de dinâmica de tipos também pode ser implicitamente convertida para outros tipos.
int i = d1;
string str = d2;
DateTime dt = d3;
System.Diagnostics.Process[] procs = d4;
Problema de sobrecarga com parâmetros de tipo dinâmico no método
Se um método é chamado de passes a um objeto de tipo dinâmico, ou o objeto chamado é de tipo dinâmico, então o julgamento de sobrecarga ocorre em tempo de execução e não em tempo de compilação.
DLR em tempo de execução de linguagem dinâmica
O tempo de execução dinâmico da linguagem é . NET Framework 4 Beta 1 é um novo conjunto de APIs que oferecem suporte para tipos dinâmicos em C# e também implementam linguagens de programação dinâmicas como IronPython e IronRuby.
Dinâmica simplifica reflexões.

Anteriormente, usávamos reflexões assim:



Agora temos uma forma simplificada de escrever:


Podemos ser desdenhosos com essa simplificação, afinal, parece que o código não foi muito reduzido, mas se levarmos em conta as duas características de eficiência e beleza, então as vantagens da dinâmica são óbvias. O compilador otimiza a dinâmica para ser muito mais rápida do que a eficiência de reflexão não cacheada. Se precisar comparar, pode rodar o código dos dois acima (a parte do método de chamada Adicionar) por 1000000 para tirar uma conclusão.






Anterior:o mvc recupera os dados XML JSON para a postagem
Próximo:Ocorreu um erro de reconhecimento. Perto da Linha 1, Coluna 10
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com