community launch 2010 - novos recursos c# 4.0
DESCRIPTION
Palestra sobre os novos recursos do C# 4.0 ministrada no evento Community Launch 2010 realizado em Piracicaba.TRANSCRIPT
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: [email protected]• MSN: [email protected]• 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