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

http://twitter.com/nandinhors

Até logo.