community launch 2010 - novos recursos c# 4.0

34
Novos recursos do C# 4.0 Felipe Prata L. Borges

Upload: felipe-borges

Post on 08-Jul-2015

716 views

Category:

Education


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Community Launch 2010 - Novos recursos C# 4.0

Novos recursos do C# 4.0

Felipe Prata L. Borges

Page 2: Community Launch 2010 - Novos recursos C# 4.0

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

Page 3: Community Launch 2010 - Novos recursos C# 4.0

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

Page 4: Community Launch 2010 - Novos recursos C# 4.0

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.

Page 5: Community Launch 2010 - Novos recursos C# 4.0
Page 6: Community Launch 2010 - Novos recursos C# 4.0

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;

Page 7: Community Launch 2010 - Novos recursos C# 4.0

Programação dinâmica

Page 8: Community Launch 2010 - Novos recursos C# 4.0

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;

Page 9: Community Launch 2010 - Novos recursos C# 4.0

Programação dinâmica

Page 10: Community Launch 2010 - Novos recursos C# 4.0

Programação dinâmica

Page 11: Community Launch 2010 - Novos recursos C# 4.0

Programação dinâmica

Demonstração:

Descrição do tipo dynamic

Como eu disse, ele pode TUDO!

Page 12: Community Launch 2010 - Novos recursos C# 4.0

Programação dinâmica

Demonstração:

Page 13: Community Launch 2010 - Novos recursos C# 4.0
Page 14: Community Launch 2010 - Novos recursos C# 4.0

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.

Page 15: Community Launch 2010 - Novos recursos C# 4.0

Argumentos opcionais

Antes:

Page 16: Community Launch 2010 - Novos recursos C# 4.0

Argumentos opcionais

Agora : (beeeeeeeem melhor!!!)

Page 17: Community Launch 2010 - Novos recursos C# 4.0

Argumentos opcionais

Page 18: Community Launch 2010 - Novos recursos C# 4.0

Argumentos opcionais

Regras de utilização:

Page 19: Community Launch 2010 - Novos recursos C# 4.0

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.

Page 20: Community Launch 2010 - Novos recursos C# 4.0

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-

Page 21: Community Launch 2010 - Novos recursos C# 4.0
Page 22: Community Launch 2010 - Novos recursos C# 4.0

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.

Page 23: Community Launch 2010 - Novos recursos C# 4.0

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.

Page 24: Community Launch 2010 - Novos recursos C# 4.0

Interoperabilidade com COM

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

– Antes – Depois

Page 25: Community Launch 2010 - Novos recursos C# 4.0

Interoperabilidade com COM

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

Page 26: Community Launch 2010 - Novos recursos C# 4.0
Page 27: Community Launch 2010 - Novos recursos C# 4.0

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.

Page 28: Community Launch 2010 - Novos recursos C# 4.0

Covariância e Contra-variância

• Arrays em .NET são covariantes

MAS NEM TANTO!!Erro em runtime

Page 29: Community Launch 2010 - Novos recursos C# 4.0

Covariância e Contra-variância

• Os genéricos nem compilam

Erro de compilação!!!

Page 30: Community Launch 2010 - Novos recursos C# 4.0

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.

Page 31: Community Launch 2010 - Novos recursos C# 4.0

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.

Page 32: Community Launch 2010 - Novos recursos C# 4.0

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:

Page 33: Community Launch 2010 - Novos recursos C# 4.0

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/

Page 34: Community Launch 2010 - Novos recursos C# 4.0

PERGUNTAS