Desenvolvimento - C#

Novidades C# 4 Linguagem Dinâmica

Com a chegada do framework 4.0 veio o C# 4 com algumas novidades dentre elas a linguagem dinâmica.

por Fernando Silva



O tema principal do C# 4 é a programação dinâmica, sendo que os objetos estão cada vez mais dinâmicos.

O C# 4 vem com 4 novas features , são elas:

  • Linguagem Dinâmica;
  • Argumentos opcionais e nomeados;
  • Melhorias na interação COM;
  • Covariance and Contravariance.

    Primeiro vamos falar um pouco da linguagem dinâmica.

    Dynamic

    O Visual Studio C# 2010 introduz um novo tipo, o tipo dinâmico. Ela funciona de forma dinâmica, mas ele é estático, um objeto ignora a verificação do tipo estático em tempo de compilação, como se fosse um object, mas mais poderoso. Em tempo de compilação ele assume qualquer operação.

    Não esquecendo que o C# ainda é linguagem de Tipagem estática.

    Ficou meio confuso o entendimento, então vamos à prática:

    Exemplo ex = new Exemplo();

    ex.metodo1(10,4);

    public class Exemplo

    {

    public void metodo1(int x)

    { }

    }

    O papel do compilador neste exemplo, é analisar um conjunto de informações, o que cada instrução propõe a fazer em tempo de execução, e qualquer declaração inválida, provoca uma exception.

    O mesmo exemplo só que agora usando o Dynamic.

    dynamic ex = new Exemplo();

    ex.metodo1(10, 4);

    public class Exemplo

    {

    public void metodo1(int x)

    { }

    }

    Nesse caso o compilador do C#, irá compilar e somente em runtime será lançada uma Exception

    Qualquer objeto pode ser implicitamente convertido para dinâmico, usando o boxing e o unboxing.

    Na variável dynamic não existe o intellisense, porque o seu tipo ainda não é conhecido, isso acontece somente em runtime.

    Para alguns casos, é preciso tomar algum cuidado na criação de método, usando o bom sendo e passar aquilo que se espera fazer.

    Veja o código abaixo. Se você espera que o retorno seja um valor numérico, mas se ele for passado como string, ao invés de somar ele será concatenado.

    dynamic a=”hello”;

    dynamic b=”world”;

    return a + b;

    A variável dynamic sempre predominará dentro de operação, como no código abaixo:

    dynamic a = 1;

    var count = a + 1;

    A variável count não será um valor inteiro e sim um Dynamic.

    Dynamic Language Runtime é chamado de DLR e é uma nova API do framework 4.0. Ele fornece infra-estrutura que suporta o tipo dinâmico em C# e também a linguagem de programação como IronPython e IronRuby. O DLR tem um excelente mecanismo de cachê que aumenta consideravelmente o transporte em tempo de execução.

    Você também pode criar seu próprio objeto dinâmico, usando a interface IDynamicObject que permite interagir com o DLR.

    Fica sem sentido essa nova funcionalidade se usarmos de maneira simples, mas se utilizarmos com outras novidades, que falarei mais adiante, você terá todo o poder dessa nova feature.

    Nos próximos artigos irei falar sobre as outras features.

    http://www.nandosilva.com

    Até logo.

  • Fernando Silva

    Fernando Silva