Download - C# 6.0 - Interopmix 2015

Transcript
Page 1: C# 6.0 - Interopmix 2015

C# 6.0NOVOS RECURSOS

Page 2: C# 6.0 - Interopmix 2015

Renato Groffe Microsoft Technical Audience Contributor (MTAC), MCP, MCTS, OCA, ITIL, COBIT

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

Articulista e Palestrante (Devmedia, .NET Magazine, Canal .NET, TechNet Wiki,

.NET Coders, TI Selvagem)

Técnico em Processamento de Dados

Contatos◦ Facebook: https://www.facebook.com/renatogroff◦ Canal .NET: https://www.facebook.com/canaldotnet◦ LinkedIn: http://br.linkedin.com/in/renatogroffe

Page 3: C# 6.0 - Interopmix 2015

Agenda

◦ Visual Studio 2015, C# 6.0 e mais...

◦ Alguns recursos da nova versão do Visual Studio

◦ Novos recursos do C# 6.0

Page 4: C# 6.0 - Interopmix 2015

Visual Studio 2015, C# 6.0 e mais...

Page 5: C# 6.0 - Interopmix 2015

Visual Studio e o novo .NET◦ 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◦ O namespace System.Web deixou de existir◦ Forte ênfase em cloud computing, JSON e utilização do NuGet

Page 6: C# 6.0 - Interopmix 2015

O novo .NET Framework

Page 7: C# 6.0 - Interopmix 2015

Alguns recursos da nova versão do Visual Studio

Page 8: C# 6.0 - Interopmix 2015

Um novo tipo de atalhoSímbolo de uma lâmpada (Light Bulb) – Quick Actions – Removendo using desnecessários (exemplo):

Page 9: C# 6.0 - Interopmix 2015

Debug de expressões lambdaO Visual Studio 2015 finalmente suporta esta funcionalidade:

Page 10: C# 6.0 - Interopmix 2015

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

Page 11: C# 6.0 - Interopmix 2015

A nova versão do utilitário NuGetNova interface:

Page 12: C# 6.0 - Interopmix 2015

Novos recursos do C# 6.0

Page 13: C# 6.0 - Interopmix 2015

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

Page 14: C# 6.0 - Interopmix 2015

Using Static – Exemplo

Page 15: C# 6.0 - Interopmix 2015

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

Page 16: C# 6.0 - Interopmix 2015

Auto-Property Initializers – O que são?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

Page 17: C# 6.0 - Interopmix 2015

Auto-Property Initializers – O que são?Exemplo em versões anteriores do C#:

Page 18: C# 6.0 - Interopmix 2015

Auto-Property Initializers – O que são?

◦ 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

Page 19: C# 6.0 - Interopmix 2015

Auto-Property Initializers – Exemplo

Page 20: C# 6.0 - Interopmix 2015

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

Page 21: C# 6.0 - Interopmix 2015

Inicialização de propriedades somente leitura a partir de um construtorExemplo em C# 6.0:

Page 22: C# 6.0 - Interopmix 2015

Expression-bodied Members – O que são?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

Page 23: C# 6.0 - Interopmix 2015

Expression-bodied Members – O que são?◦ Implementação de elementos a partir de expressões lambda

◦ Expression-bodied Property (para propriedades somente leitura)

◦ Expression-bodied Function

Page 24: C# 6.0 - Interopmix 2015

Expression-bodied Members – Propriedades

Agora também:Antes:

Page 25: C# 6.0 - Interopmix 2015

Expression-bodied Members – MétodosAgora também:Antes:

Page 26: C# 6.0 - Interopmix 2015

Exception Filters – O que são?Diferentes checagens envolvendo um mesmo tipo de exceção forçavam ao uso de vários “ifs”, em versões anteriores do C#:

Page 27: C# 6.0 - Interopmix 2015

Exception Filters – O que são?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):

Page 28: C# 6.0 - Interopmix 2015

String Interpolation – O que é?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

Page 29: C# 6.0 - Interopmix 2015

String Interpolation – O que é?Exemplo de uso de placeholders:

Page 30: C# 6.0 - Interopmix 2015

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

◦ O próprio IntelliSense já suporta também este mecanismo

Page 31: C# 6.0 - Interopmix 2015

String Interpolation – Exemplo

Page 32: C# 6.0 - Interopmix 2015

Null-conditional operator – O que é?◦ 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

Page 33: C# 6.0 - Interopmix 2015

Null-conditional operator – O que é?Versões anteriores do C#:

Page 34: C# 6.0 - Interopmix 2015

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”

Page 35: C# 6.0 - Interopmix 2015

Null-conditional operator – Exemplo

Page 36: C# 6.0 - Interopmix 2015

Null-conditional operator – DelegatesUtilizar o método Invoke:

Page 37: C# 6.0 - Interopmix 2015

Chamadas assíncronas em blocos catch e finallyC# 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

Page 38: C# 6.0 - Interopmix 2015

Chamadas assíncronas em blocos catch e finally - Exemplo

Page 39: C# 6.0 - Interopmix 2015

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”

Page 40: C# 6.0 - Interopmix 2015

O operador nameof – Exemplo

Page 41: C# 6.0 - Interopmix 2015

Inicialização de instâncias do tipo DictionaryAntes 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

Page 42: C# 6.0 - Interopmix 2015

Inicialização de instâncias do tipo Dictionary

ou

Page 43: C# 6.0 - Interopmix 2015

Inicialização de instâncias do tipo DictionaryCom o C# 6.0 é possível uma terceira sintaxe, baseada no uso de colchetes:

Page 45: C# 6.0 - Interopmix 2015

Perguntas?

Page 46: C# 6.0 - Interopmix 2015

Obrigado!