View
850
Download
1
Category
Preview:
Citation preview
Apresentação – Renato Groffe
Mais de 15 anos de experiência na área de Tecnologia
Pós-graduação em Engenharia de Software – ênfase em SOA
MBA em Business Intelligence
Graduação em Sistemas de Informação
Técnico em Processamento de Dados
MTAC (Microsoft Technical Audience Contributor), MCP, Microsoft Specialist, MCTS, OCA, ITIL, COBIT
Contatos Página no Facebook
https://www.facebook.com/RenatoGroffeSW
Perfil no Facebookhttps://www.facebook.com/renatogroff
LinkedInhttp://br.linkedin.com/in/renatogroffe
Recurso Utilizados
Microsoft Visual Studio Community 2015https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx
Visual Studio 2015 e C# 6.0 Alguns recursos da nova versão do Visual Studio Using Static O operador nameof Auto-Property Initializers Inicialização de propriedades somente leitura a partir de um
construtor Expression-bodied Members Inicialização de instâncias do tipo Dictionary Exception Filters Implementação de construtores sem parâmetros em structs String Interpolation Chamadas assíncronas em blocos catch e finally Null-conditional operator Null-conditional operator e delegates
Agenda
Visual Studio 2015 e C# 6.0 Lançamento das versões de avaliação do Visual Studio “14” em 2014
A IDE posteriormente foi renomada para Visual Studio 2015, contando com diversas melhorias → lançamento em Julho/2015 da versão RTM
C# 6.0 – nova versão da linguagem, também com melhorias visando simplificar o desenvolvimento
.NET Framework 4.6, com novo compilador (Roslyn)
Boa parte da plataforma .NET é agora open source, estando hospedada no GitHub
Plataforma Web totalmente reformulada => ASP.NET 5 e MVC 6◦ O namespace System.Web deixou de existir◦ Forte ênfase em cloud computing, JSON e utilização do NuGet
Um novo tipo de atalho no VS 2015 Símbolo de uma lâmpada (Light Bulb) – Quick Actions – Removendo using
desnecessários (exemplo):
A nova versão do utilitário NuGet
Interface nova inteiramente reformulada
A interface também deixou de ser um formulário modal
Possibilidade de seleção da versão de um package a partir de um combo
Funcionalidade para consolidar as diferentes versões de um package dentro de uma mesma solução
Resolução automática de conflitos envolvendo diferentes versões de uma mesma referência
Using Static
O uso de métodos estáticos é extremamente comum em C#:
◦ Conversão de valores (Classe System.Convert, por exemplo)
◦ Cálculos aritméticos (classe System.Math, por exemplo)
Using Static
O que é?
◦ Declaração do tipo que será utilizado no início de um arquivo .cs (através de uma instrução “using static”)
◦ Forma simples para invocação de métodos estáticos
◦ Código mais enxuto
O operador nameof
O que é?
◦ Permite a obtenção de nomes de variáveis e parâmetros (para possível utilização na gravação de registros de log)
◦ Dispensa o uso de strings, as quais poderiam ficar com conteúdo inválido caso os elementos a que se referem fossem renomeados
◦ Recurso disponível através da palavra-chave “nameof”
Auto-Property Initializers
Especificação de valores default para propriedades em versões anteriores do C#:
◦ No construtor de uma classe (exceto propriedades somente leitura)
◦ Na declaração de atributos associados a propriedades
Auto-Property Initializers
O que é? :
◦ Inicialização de propriedades (mesmo aquelas somente leitura) no próprio ponto em que são declaradas
◦ Dispensa o uso de atributos privados, como acontecia anteriormente
Inicialização de propriedades somente leitura a partir de um construtor
Além do mecanismo Auto-Property Initializer, agora também é possível a atribuição de valores a propriedades read-only no construtor de uma classe
Este recurso pode ser útil no preenchimento de propriedades com base em parâmetros informados a um construtor
Inicialização de propriedades somente leitura a partir de um construtor
Versões anteriores da linguagem C#:
Expression-bodied Members
Expressões lambda
◦ Disponíveis desde o C# 3.0
◦ Parte integrante da extensão LINQ (Language-Integrated Query)
◦ Um tipo de função anônima que busca simplificar e tornar mais enxuto o código
Expression-bodied Members
◦ Implementação de elementos a partir de expressões lambda
◦ Expression-bodied Property (para propriedades somente leitura)
◦ Expression-bodied Function
Inicialização de instâncias do tipo Dictionary
Antes do C# 6.0 a inicialização de instâncias baseadas no tipo Dictionary poderia ser feita de duas maneiras:
◦ Através do método Add, logo após a geração da instância
◦ Pares de chave-valor separados por “{” e “}”, durante a instanciação do objeto
Inicialização de instâncias do tipo Dictionary
Com o C# 6.0 é possível uma terceira sintaxe, baseada no uso de colchetes e que guarda semelhanças com o padrão JSON:
Exception Filters
Diferentes checagens envolvendo um mesmo tipo de exceção forçavam ao uso de vários “ifs”, em versões anteriores do C#:
Exception Filters Exception Filters são um recurso do C# 6.0 que possibilita o uso de
condições na própria cláusula catch (resultando em um código mais elegante):
String Interpolation
Manipulação de strings desde as primeiras versões do .NET Framework:
◦ Simples concatenação (tende a tornar o código mais poluído no caso de sequências grandes de texto)
◦ Uso de placeholders (índices numéricos delimitados por chaves), em conjunto com métodos como Format da classe String ou ainda, Write e WriteLine na classe Console
◦ Embora os placeholders representem a melhor alternativa, a inclusão de novos parâmetros em strings já existentes é um processo suscetível a erros
String Interpolation Alterando o exemplo anterior (inclusão de um novo placeholder e alterações no
índice dos demais):
String Interpolation O que é?
◦ Possibilidade de utilizar diretamente expressões ao invés de placeholders numa string (o que não significa que seja necessário se valer de concatenação)
◦ As strings que fazem uso deste mecanismo devem ser iniciadas por “$” (dólar)
◦ As expressões devem estar delimitadas por chaves
◦ Dispensa o uso de métodos como o Format da classe String
String Interpolation Além de variáveis, propriedades e chamadas a métodos, expressões
baseadas no operador “?” também podem ser empregadas:
Chamadas assíncronas em blocos catch e finally
C# 5.0 => novo modelo para processamento assíncrono
◦ Palavras-chave async e await
◦ Namespace System.Threading.Tasks, com classes como Task e Parallel
◦ Grande utilidade na implementação de aplicações visuais, sobretudo aquelas voltadas a dispositivos móveis
Limitações◦ Impossibilidade de chamadas assíncronas em blocos catch e
finally
Null-conditional operator NullReferenceException
◦ Desatenção◦ Serviço deixado “pela metade”
Necessidade de checagens, validando se referências estão ou não preenchidas
Muitas verificações ao longo de um sistema
Null-conditional operator O que é?
◦ Símbolo “?” acompanhando referências Variáveis Propriedades Atributos de classes Métodos que produzem algum retorno
◦ Substitui o uso de “ifs”
Null-conditional operator e delegates Delegates
◦ Implementação de eventos na plataforma .NET
◦ Uso de tipos derivados da classe EventArgs (namespace System)
◦ Palavras-chave “delegate” (declaração) e “event” (evento baseado em um delegate)
Referências C# 6.0 – Novos Recursos – Parte 1
http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-1/
C# 6.0 – Novos Recursos – Parte 2http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-2/
C# 6.0 – Novos Recursos – Parte 3http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-3/
C# 6.0 – Novos Recursos – Parte 4http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-4/
C# 6.0 – Novos Recursos – Parte 5http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-5/
Fontes dos exemplos abordados nesta apresentaçãohttps://gallery.technet.microsoft.com/C-60-Novos-Recursos-d22a7d9d
Recommended