O documento resume as principais evoluções da linguagem C#, desde sua primeira versão em 2002 até a versão mais recente em 2012. Aborda recursos introduzidos em cada versão como generics, LINQ, tipos dinâmicos e programação assíncrona.
MVP Virtual Conference 2013: Cenário do mundo real
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011
1. A evolução e o futuro da
linguagem C# (1.0, 2.0, 3.0, 4, 5)
(30/01/2011)
Rogério Moraes de Carvalho
Consultor e Instrutor de Tecnologias da Informação
Twitter: @rogeriomc
Virtual Developer Day
.NET Interior | Microsoft - CEA/MSDN | Silverlight Brasil | Silverlight Planet | Codificando .NET
2. Evolução da linguagem C#
Programação assíncrona,
C# 5 compilador como um serviço, ...
(2012?)
Objetos tipados dinamicamente,
C# 4 parâmetros opcionais e nomeados,
(Abr 2010)
covariância e contravariância, …
Language Integrated Query (LINQ),
C# 3.0 expressões Lambda, métodos de
(Nov 2007)
extensão, tipos anônimos, ...
Generics, Iterators, tipos parciais, tipos anuláveis,
C# 2.0 classes estáticas, métodos anônimos, ...
(Nov 2005)
Código gerenciado, linguagem de POO, suporte nativo a
C# 1.0 propriedades e eventos, documentação XML, exceções,
(Fev 2002) segurança de tipos, delegates, sobrecarga de operadores, ...
Virtual Developer Day 2011 | .NET Interior
3. C# 1.0
• Criada do zero para o .NET Framework 1.0
• Algumas características da linguagem
– Linguagem de POO de tipos seguros
– Suporta tipos por valor e por referência
• Estruturas, enumerações, classes, interfaces,
delegates e arrays
– Código gerenciado (com coletor de lixo)
– Várias categorias de membros em alguns tipos
• Campos, métodos, propriedades, eventos, ...
Virtual Developer Day 2011 | .NET Interior
4. C# 2.0
• Principais facilidades introduzidas
– Iterators
• Permite que o compilador gere automaticamente
código que implementa um dos seguintes tipos:
– IEnumerable, IEnumerator
– IEnumerable<T>, IEnumerator<T>
• Instruções yield return ou yield break
– Métodos anônimos
• Facilita a instanciação de delegates evitando a
necessidade da criação de métodos separados
Virtual Developer Day 2011 | .NET Interior
5. C# 3.0
• Principal facilidade introduzida
– Language INtegrated Query (LINQ)
• Conjunto de tecnologias para permitir a integração
de capacidades de consulta diretamente para a
linguagem C#
• Facilita a escrita de códigos para:
– ordenar,
– filtrar,
– juntar,
– agrupar e
– agregar dados de fontes de dados variadas
Virtual Developer Day 2011 | .NET Interior
6. C# 4
• Principal facilidade introduzida
– Tipos dinâmicos
• Operações em tipos dinâmicos são ignoradas na
checagem de tipo em tempo de compilação
• As operações são resolvidas em tempo de
execução
• Introdução da palavra-chave dynamic
• Ambiente de execução que adiciona um conjunto
de serviços para linguagens dinâmicas no CLR
– Dynamic Language Runtime (DLR)
Virtual Developer Day 2011 | .NET Interior
7. Programação síncrona
• Características da programação síncrona
– Uma thread simples é usada para o
processamento do fragmento de código
– Cada membro de função executado precisa
terminar o seu processamento para que um
próximo seja executado
Virtual Developer Day 2011 | .NET Interior
8. Demo Síncrono
Virtual Developer Day 2011 | .NET Interior
9. Programação assíncrona
• Características da programação assíncrona
– Tarefas distintas são divididas entre duas ou
mais threads que processam blocos de código
simultaneamente
• Ou, pelo menos, dividindo tempo do processador
– Um membro de função executado não precisa
terminar o seu processamento para que um
próximo seja executado
Virtual Developer Day 2011 | .NET Interior
10. APM
• Asynchronous Programming Model (APM)
– Primeiro padrão de programação assíncrona
introduzido no .NET Framework 1.0
– Versão assíncrona de NomeMetodo
• Método BeginNomeMetodo
– Inicia a operação assíncrona e retorna um objeto que
implementa a interface IAsyncResult
– Inclui os parâmetros da versão síncrona do método e
outros dois: delegate AsyncCallback e objeto de estado
• Método EndNomeMetodo
– Finaliza a operação assíncrona e pode retornar um valor
Virtual Developer Day 2011 | .NET Interior
11. EAP
• Event-based Asynchronous Pattern (EAP)
– Segundo padrão de programação assíncrona
introduzido no .NET Framework 2.0
– Versão assíncrona de NomeMetodo
• Método NomeMetodoAsync
– Inicia uma operação assíncrona
• Evento NomeMetodoCompleted
– Evento para sinalizar a finalização da operação assíncrona
Virtual Developer Day 2011 | .NET Interior
12. TAP
• Task-based Asynchronous Pattern (TAP)
– Novo padrão para programação assíncrona
– Baseado nos tipos Task e Task<TResult> do
namespace System.Threading.Tasks
• Usados para representar operações assíncronas
– Tipo Task: representa uma operação assíncrona sem um
resultado
– Tipo Task<TResult>: representa uma operação assíncrona
com um resultado do tipo TResult
Virtual Developer Day 2011 | .NET Interior
13. TAP
• Versão assíncrona de um método com TAP
– Nomenclatura (um único método)
• Método NomeMetodoAsync (sufixo Async)
– Parâmetros
• Mesmos parâmetros na mesma ordem
– Parâmetros de saída (out) e por referência (ref) devem ser
evitados
– Tipo de retorno
• Tipo Task, se o método for void
• Tipo Task<TipoRetorno>, se o método não for void
Virtual Developer Day 2011 | .NET Interior
14. Async CTP
• Visual Studio Async CTP (PDC - 28/10/2010)
– Community Tecnology Preview das novas
características para simplificar a programação
assíncrona em C# e Visual Basic
• Projetado para o Visual Studio 2010 RTM
– Suporta a nova sintaxe e APIs para
desenvolvimento assíncrono
– Download
• http://go.microsoft.com/fwlink/?LinkId=203690
Virtual Developer Day 2011 | .NET Interior
15. C# 5
• Principal facilidade a ser introduzida
– Funções assíncronas
• Novas palavras-chaves: async e await
– A palavra-chave await é usada para marcar chamadas
assíncronas
» Dispensa a necessidade de se criar funções de
callback
– A palavra-chave async deve estar presente na assinatura
de funções que fazem chamadas assíncronas
» A palavra-chave await somente pode ser usada se a
palavra-chave async na assinatura da função
Virtual Developer Day 2011 | .NET Interior
16. C# 5
• Características das funções assíncronas
– Tipos de retorno das funções assíncronas
• Deve ser void, Task ou Task<TResult>
– Avaliação de funções assíncronas
• Inicialmente idêntica a uma função síncrona
• Quando atinge uma expressão await, a função
assíncrona deve retornar ao seu chamador
– Se a função assíncrona não for void, um objeto Task ou
Task<TResult> será retornado para o chamador
Virtual Developer Day 2011 | .NET Interior
17. Demo async e await (C# 5)
Virtual Developer Day 2011 | .NET Interior
18. Contatos
• E-mail
rogeriom@gmx.net
• Blog
http://rogeriomc.wordpress.com/
• Twitter
@rogeriomc
Virtual Developer Day 2011 | .NET Interior
19. Virtual Developer Day
.NET Interior | Microsoft - CEA/MSDN | Silverlight Brasil | Silverlight Planet | Codificando .NET
Virtual Developer Day 2011 | .NET Interior