novidades do csharp 4.0
DESCRIPTION
Apresentação sobre as novas funcionalidades do CSharp 4, adicionadas no .NET Framework 4.0, com demonstrações práticas de utilização de cada uma destas funcionalidades, na 1ª Reunião Presencial da Comunidade NetPonto, no PortoTRANSCRIPT
Novidades do .NET Framework 4.0 para o C#
Caio Proiete
http://netponto.org1ª Reunião Presencial PORTO - 27/03/2010
Caio Proiete9 anos de experiência profissional em TIHá 3 anos em PortugalMicrosoft Most Valuable Professional 2009-2010Microsoft Certified Trainer desde 2004
http://caioproiete.com
Agenda
• Evolução do .NET Framework• Novidades do C#• Programação Dinámica com C#• Melhorias no COM Interop• Questões (Q & A)
Evolução do .NET Framework
.NET 1.0 .NET 1.1 .NET 2.0
3.0
3.5
.NET 4.0
2002 2003 2008 CTP2005-08
CLR 1.0 CLR 1.1 CLR 2.0 CLR 4.0
SP1
CLR = Common Language Runtime
.NET Framework 1.0 até 3.5
Common Language Runtime
Linguagens Estáticas
C#VB
.NET Framework 4.0
Common Language Runtime
C#VB
RubyPython
Linguagens Dinámicas
Dynamic Language Runtime
Linguagens Estáticas
Ferramenta: Visual Studio 2010• Actualmente na versão Release
Candidate (RC)
• Download gratuito:http://bit.ly/vs2010rc
• Versão final (RTM) será lançadaem 12 de Abril de 2010
Novidades do C# - Parte 1/2
• Argumentos Opcionais– Permite omitir argumentos ao chamar métodos,
assumindo um valor padrão
• Argumentos Nomeados– Permite informar o nome dos argumentos ao chamar
métodos
Argumentos Opcionais eArgumentos Nomeados
demonstração
Código-fonte disponível para download:http://netponto.codeplex.com/releases/view/42778#DownloadId=113396
Novidades do C# - Parte 2/2
• Novidade para Generics!– Covariance• Permite conversões do tipo mais específico para o tipo mais
genérico (Ex: Classe Derivada => Classe Base)
– Contravariance• Permite conversões do tipo mais genérico para o tipo mais
específico (Ex: Classe Base => Classe Derivada)
Covariance / Contravariance
demonstração
Código-fonte disponível para download:http://netponto.codeplex.com/releases/view/42778#DownloadId=113396
Programação Dinámica no .NET
PythonBinder
RubyBinder
COMBinder
JScriptBinder
ObjectBinder
Dynamic Language Runtime
Expression Trees Dynamic Dispatch Call Site Caching
IronPython IronRuby C# VB.NET Outras…
Programação Dinámica no C#
• Novo tipo dynamic– Resolução dinámica de métodos, propriedades, e
eventos (em tempo de execução)– Não efectua validação estática
Dynamic
demonstração
Código-fonte disponível para download:http://netponto.codeplex.com/releases/view/42778#DownloadId=113396
Programação Dinámica no C#
• Nova classe ExpandoObject– Permite criar objectos dinámicos em tempo de
execução– Implementa a interface IDynamicMetaObjectProvider
ExpandoObject
demonstração
Código-fonte disponível para download:http://netponto.codeplex.com/releases/view/42778#DownloadId=113396
Programação Dinámica no C#
• Nova classe DynamicObject– Facilita a criação de classes dinámicas (utilizada como
classe base)– Também implementa a interface IDynamicMetaObjectProvider
DynamicObject
demonstração
Código-fonte disponível para download:http://netponto.codeplex.com/releases/view/42778#DownloadId=113396
Melhorias no COM Interop
• Agora é Opcional (o compilador faz por si):– Utilizar a palavra-chave ref na chamada de métodos– Efectuar casts de Value Types para object
• Suporte a argumentos opcionais e nomeados
• Agora pode-se incluir o assembly de Interop na aplicação
Melhorias COM Interop
demonstração
Código-fonte disponível para download:http://netponto.codeplex.com/releases/view/42778#DownloadId=113396
Questões?
ReferênciasDynamic Language Runtime Overview
– http://msdn.microsoft.com/en-us/library/dd233052(VS.100).aspx
Covariance and Contravariance FAQ– http://
blogs.msdn.com/csharpfaq/archive/2010/02/16/covariance-and-contravariance-faq.aspx
Dynamic in C# 4.0: Creating Wrappers with DynamicObject– http://
blogs.msdn.com/csharpfaq/archive/2009/10/19/dynamic-in-c-4-0-creating-wrappers-with-dynamicobject.aspx
DownloadDownload do código-fonte das demonstrações desta apresentação:
– http://netponto.codeplex.com/releases/view/42778#DownloadId=113396
Obrigado!
Caio [email protected]://caioproiete.comhttp://twitter.com/caioproiete