Community Launch 2010 - Novos recursos C# 4.0

841 visualizações

Publicada em

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

Publicada em: Educação
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
841
No SlideShare
0
A partir de incorporações
0
Número de incorporações
13
Ações
Compartilhamentos
0
Downloads
17
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Community Launch 2010 - Novos recursos C# 4.0

  1. 1. Novos recursos do C# 4.0 Felipe Prata L. Borges
  2. 2. Felipe Prata L. Borges <ul><li>Analista desenvolvedor .NET </li></ul><ul><li>Consultor .NET </li></ul><ul><li>Ministra aulas do curso de certificação .NET </li></ul><ul><li>Contatos: </li></ul><ul><li>Email: [email_address] </li></ul><ul><li>MSN: [email_address] </li></ul><ul><li>Skype: felipe.prabor </li></ul><ul><li>http://twitter.com/felipe_prabor </li></ul>
  3. 3. 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...
  4. 4. Novidades do C# 4.0 <ul><li>Análise </li></ul><ul><ul><li>Inspirada pelas linguagens dinâmicas como Ruby e Python; </li></ul></ul><ul><ul><li>Produtividade e interoperabilidade para facilitar a vida dos desenvolvedores; </li></ul></ul><ul><ul><li>Lado a lado com VB. </li></ul></ul><ul><li>Novos Recursos </li></ul><ul><ul><li>Programação dinâmica; </li></ul></ul><ul><ul><li>Parâmetros opcionais e nomeados; </li></ul></ul><ul><ul><li>Interoperabilidade facilitada com COM; </li></ul></ul><ul><ul><li>Covariância e contra-variância. </li></ul></ul>
  5. 6. Programação dinâmica Novo tipo dynamic ! <ul><li>Pode ser tudo: variável, propriedade, retorno de métodos, parâmetros, etc; </li></ul><ul><li>Tipos dinâmicos são do tipo System.Object; </li></ul><ul><li>Tipos dinâmicos são estáticos como os outros tipos, porém ignora a verificação estática; </li></ul>
  6. 7. Programação dinâmica
  7. 8. Programação dinâmica <ul><li>DLR (Dynamic Language Runtime - http://dlr.codeplex.com) </li></ul><ul><ul><li>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; </li></ul></ul><ul><li>Iron (Implementation Running On .NET) </li></ul><ul><ul><li>IronRuby e IronPython : linguagens adaptadas para rodar Ruby e Python no runtime do .NET; </li></ul></ul>
  8. 9. Programação dinâmica
  9. 10. Programação dinâmica
  10. 11. Programação dinâmica Demonstração: Descrição do tipo dynamic Como eu disse, ele pode TUDO!
  11. 12. Programação dinâmica Demonstração:
  12. 14. Argumentos opcionais e nomeados <ul><li>Argumentos opcionais </li></ul><ul><ul><li>Permite criação de métodos com argumentos não obrigatórios; </li></ul></ul><ul><ul><li>Evita excesso de métodos para sobrecarga. </li></ul></ul><ul><li>Argumentos nomeados </li></ul><ul><ul><li>Permite chamada de métodos especificando pelo nome do parâmetro cada argumento passado; </li></ul></ul><ul><ul><li>Útil quando utilizado em conjunto com os argumentos opcionais. </li></ul></ul>
  13. 15. Argumentos opcionais Antes:
  14. 16. Argumentos opcionais Agora : (beeeeeeeem melhor!!!)
  15. 17. Argumentos opcionais
  16. 18. Argumentos opcionais Regras de utilização:
  17. 19. Argumentos nomeados <ul><li>Os argumentos nomeados podem ser declarados em qualquer ordem e qualquer tipo de argumento pode ser nomeado, seja ele opcional ou não. </li></ul>
  18. 20. 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étodos Métodos com definição mais clara -
  19. 22. Interoperabilidade com COM <ul><li>Utilização de tipos dinâmicos; </li></ul><ul><ul><li>Antes sempre quando usava componentes COM era necessário fazer o cast para Object. </li></ul></ul><ul><li>Utilização de parâmetros opcionais e nomeados; </li></ul><ul><ul><li>Passa-se somente o necessário na chamada dos métodos. </li></ul></ul><ul><li>Omissão da palavra-chave ref; </li></ul><ul><ul><li>Compilador insere os ref automaticamente e cria variáveis temporárias para cada um dos parâmetros. </li></ul></ul><ul><li>Mesclar dll Interop com a dll do projeto. </li></ul>
  20. 23. Interoperabilidade com COM <ul><ul><li>Antes </li></ul></ul><ul><ul><li>Depois </li></ul></ul><ul><li>Parâmetros e retornos dos métodos do tipo dynamic . </li></ul>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];
  21. 24. Interoperabilidade com COM <ul><li>Omissão dos ref e utilização de parâmetros nomeados e opcionais: </li></ul><ul><ul><li>Antes </li></ul></ul><ul><ul><li>Depois </li></ul></ul>
  22. 25. Interoperabilidade com COM Assembly do interop é colocado junto com a dll do projeto:
  23. 27. Covariância e Contra-variância <ul><li>Definição em programação: </li></ul><ul><ul><li>Variância é uma “operação” que controla a alteração de tipos. </li></ul></ul><ul><ul><li>Covariância são alterações nos tipos do mais específico para o mais genérico. </li></ul></ul><ul><ul><li>Contra-variância são alterações nos tipos do mais genérico para o mais específico. </li></ul></ul>
  24. 28. Covariância e Contra-variância <ul><li>Arrays em .NET são covariantes </li></ul>MAS NEM TANTO!! Erro em runtime
  25. 29. Covariância e Contra-variância <ul><li>Os genéricos nem compilam </li></ul>Erro de compilação!!!
  26. 30. Covariância e Contra-variância <ul><li>O IEnumerable<T> funciona!!!! </li></ul><ul><li>- 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. </li></ul><ul><li>Diferente do IList que executa ações sobre o tipo passado. Como os métodos IndexOf, insert e outros. </li></ul>
  27. 31. Covariância e Contra-variância <ul><li>Exemplo de contra-variância: </li></ul>Delegate com Pessoa, tipo mais Genérico Passado para o tipo mais específico.
  28. 32. Covariância e Contra-variância <ul><li>Agora a covariância e contra-variância para delegates e tipos genéricos possui as palavras-chave in e out : </li></ul>
  29. 33. Fontes <ul><li>http://www.codeproject.com/KB/cs/CSharp4Features.aspx </li></ul><ul><li>http://www.brasildotnet.net/ </li></ul><ul><li>http://unplugged.giggio.net </li></ul><ul><li>http://viniciusquaiato.com/ </li></ul><ul><li>http://msmvps.com/blogs/jon_skeet/archive/2009/06/19/os-jam-at-google-london-c-4-and-the-dlr.aspx </li></ul><ul><li>http://blogs.msdn.com/cburrows/archive/2008/10/27/c-dynamic.aspx </li></ul><ul><li>http://msdn.microsoft.com/pt-br/magazine/ee336029.aspx </li></ul><ul><li>http://msdn.microsoft.com/en-us/vcsharp/ee672319.aspx </li></ul><ul><li> http://www.pontonetpt.com/ </li></ul>
  30. 34. PERGUNTAS

×