Community Launch 2010 - Novos recursos C# 4.0

Post on 08-Jul-2015

716 views 0 download

description

Palestra sobre os novos recursos do C# 4.0 ministrada no evento Community Launch 2010 realizado em Piracicaba.

Transcript of Community Launch 2010 - Novos recursos C# 4.0

Novos recursos do C# 4.0

Felipe Prata L. Borges

Felipe Prata L. Borges

• Analista desenvolvedor .NET• Consultor .NET • Ministra aulas do curso de certificação .NET

Contatos:• Email: felipe.prabor@gmail.com• MSN: felipeufjf@hotmail.com• Skype: felipe.prabor• http://twitter.com/felipe_prabor

Evolução do C#

Início do C#

C# 1.0(Fev. 2002)

Criação de uma nova linguagem para trabalhar diretamente com a nova plataforma que surgia, plataforma .NET.

Código gerenciado, linguagem de POO, documentação XML, suporte nativo a propriedades e eventos, exceções, segurança de tipos...

C# 2.0(Nov. 2005)

Generics, Interators, tipos parciais, tipos anuláveis, classes estáticas, métodos anônimos...

C# 3.0(Nov. 2007)

LINQ (Language Integrated Query), expressões Lambda, métodos de extensão, tipos anônimos, propriedades automáticas...

C# 4.0(Nov. 2007)

Dinamismo com DLR do .net, argumentos opcionais e nomeados, interoperabilidade com COM melhorada, covariância e contravariância...

Novidades do C# 4.0

Análise– Inspirada pelas linguagens dinâmicas como Ruby

e Python;– Produtividade e interoperabilidade para facilitar

a vida dos desenvolvedores;– Lado a lado com VB.

Novos Recursos– Programação dinâmica;– Parâmetros opcionais e nomeados;– Interoperabilidade facilitada com COM;– Covariância e contra-variância.

Programação dinâmica

Novo tipo dynamic!

• Pode ser tudo: variável, propriedade, retorno de métodos, parâmetros, etc;

• Tipos dinâmicos são do tipo System.Object;

• Tipos dinâmicos são estáticos como os outros tipos, porém ignora a verificação estática;

Programação dinâmica

Programação dinâmica

DLR (Dynamic Language Runtime - http://dlr.codeplex.com)– Parte do .NET framework 4.0, é responsável por fazer a

interpretação dos tipos dynamic e pela integração com as linguagens dinâmicas Ruby e Python;

Iron (Implementation Running On .NET)– IronRuby e IronPython : linguagens adaptadas para

rodar Ruby e Python no runtime do .NET;

Programação dinâmica

Programação dinâmica

Programação dinâmica

Demonstração:

Descrição do tipo dynamic

Como eu disse, ele pode TUDO!

Programação dinâmica

Demonstração:

Argumentos opcionais e nomeados

Argumentos opcionais– Permite criação de métodos com argumentos

não obrigatórios;– Evita excesso de métodos para sobrecarga.

Argumentos nomeados– Permite chamada de métodos especificando

pelo nome do parâmetro cada argumento passado;

– Útil quando utilizado em conjunto com os argumentos opcionais.

Argumentos opcionais

Antes:

Argumentos opcionais

Agora : (beeeeeeeem melhor!!!)

Argumentos opcionais

Argumentos opcionais

Regras de utilização:

Argumentos nomeados

• Os argumentos nomeados podem ser declarados em qualquer ordem e qualquer tipo de argumento pode ser nomeado, seja ele opcional ou não.

Argumentos opcionais e nomeados

Vantagens Desvantagens

Simplicidade Criação de métodos com excesso de parâmetros.

Código mais limpo Alterar ordem de parâmetros na chamada dos métodosMétodos com definição mais

clara-

Interoperabilidade com COM

• Utilização de tipos dinâmicos;– Antes sempre quando usava componentes COM

era necessário fazer o cast para Object.• Utilização de parâmetros opcionais e nomeados;– Passa-se somente o necessário na chamada dos

métodos.• Omissão da palavra-chave ref;– Compilador insere os ref automaticamente e cria

variáveis temporárias para cada um dos parâmetros.

• Mesclar dll Interop com a dll do projeto.

Interoperabilidade com COM

excel.Cells[1,1].Value = “Hello”;

Excel.Range range = excel.Cells[1,1];

((Excel.Range)excel.Cells[1,1]).Value = “Hello”;

Excel.Range range = (Excel.Range)excel.Cells[1,1];

– Antes

– Depois

• Parâmetros e retornos dos métodos do tipo dynamic.

Interoperabilidade com COM

• Omissão dos ref e utilização de parâmetros nomeados e opcionais:

– Antes – Depois

Interoperabilidade com COM

Assembly do interop é colocado junto com a dll do projeto:

Covariância e Contra-variância

• Definição em programação:– Variância é uma “operação” que controla a

alteração de tipos.– Covariância são alterações nos tipos do mais

específico para o mais genérico.– Contra-variância são alterações nos tipos do mais

genérico para o mais específico.

Covariância e Contra-variância

• Arrays em .NET são covariantes

MAS NEM TANTO!!Erro em runtime

Covariância e Contra-variância

• Os genéricos nem compilam

Erro de compilação!!!

Covariância e Contra-variância

• O IEnumerable<T> funciona!!!! - Isso é possível porque na verdade no

IEnumerable os tipos são apenas lidos e iterados, então por ser somente leitura não acusa problema no compilador.• Diferente do IList que executa ações sobre o tipo passado. Como os métodos IndexOf, insert e outros.

Covariância e Contra-variância

• Exemplo de contra-variância:

Delegate com Pessoa, tipo mais Genérico

Passado para o tipo mais específico.

Covariância e Contra-variância

• Agora a covariância e contra-variância para delegates e tipos genéricos possui as palavras-chave in e out:

Fontes

• http://www.codeproject.com/KB/cs/CSharp4Features.aspx•http://www.brasildotnet.net/•http://unplugged.giggio.net•http://viniciusquaiato.com/•http://msmvps.com/blogs/jon_skeet/archive/2009/06/19/os-jam-at-google-london-c-4-and-the-dlr.aspx•http://blogs.msdn.com/cburrows/archive/2008/10/27/c-dynamic.aspx•http://msdn.microsoft.com/pt-br/magazine/ee336029.aspx•http://msdn.microsoft.com/en-us/vcsharp/ee672319.aspx• http://www.pontonetpt.com/

PERGUNTAS