C# 6.0 - Novos Recursos

Download C# 6.0 - Novos Recursos

Post on 14-Apr-2016

8 views

Category:

Documents

0 download

Embed Size (px)

DESCRIPTION

C# 6.0 - Novos Recursos - Renato Groffe

TRANSCRIPT

C# 6.0 - Novos RecursosRenato GroffeAgosto/2015

1Apresentao Renato GroffeMais de 15 anos de experincia na rea de Tecnologia

Ps-graduao em Engenharia de Software nfase em SOA

MBA em Business Intelligence

Graduao em Sistemas de Informao

Tcnico em Processamento de Dados

MTAC (Microsoft Technical Audience Contributor), MCP, Microsoft Specialist, MCTS, OCA, ITIL, COBIT2ContatosPgina no Facebookhttps://www.facebook.com/RenatoGroffeSW

Perfil no Facebookhttps://www.facebook.com/renatogroff

LinkedInhttp://br.linkedin.com/in/renatogroffe3Recurso UtilizadosMicrosoft Visual Studio Community 2015https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx4Visual Studio 2015 e C# 6.0Alguns recursos da nova verso do Visual StudioUsing StaticO operador nameofAuto-Property InitializersInicializao de propriedades somente leitura a partir de um construtorExpression-bodied MembersInicializao de instncias do tipo DictionaryException FiltersImplementao de construtores sem parmetros em structsString InterpolationChamadas assncronas em blocos catch e finallyNull-conditional operatorNull-conditional operator e delegatesAgenda5Visual Studio 2015 e C# 6.0Lanamento das verses de avaliao do Visual Studio 14 em 2014

A IDE posteriormente foi renomada para Visual Studio 2015, contando com diversas melhorias lanamento em Julho/2015 da verso RTM

C# 6.0 nova verso da linguagem, tambm 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 6O namespace System.Web deixou de existirForte nfase em cloud computing, JSON e utilizao do NuGet6Um novo tipo de atalho no VS 2015Smbolo de uma lmpada (Light Bulb) Quick Actions Removendo using desnecessrios (exemplo):

7Debug de expresses lambdaAt o Visual Studio 2013 (ERRO):

8Debug de expresses lambdaO Visual Studio 2015 finalmente suporta esta funcionalidade:

9A nova verso do utilitrio NuGetInterface nova inteiramente reformulada

A interface tambm deixou de ser um formulrio modal

Possibilidade de seleo da verso de um package a partir de um combo

Funcionalidade para consolidar as diferentes verses de um package dentro de uma mesma soluo

Resoluo automtica de conflitos envolvendo diferentes verses de uma mesma referncia10A nova verso do utilitrio NuGetNova interface:

11A nova verso do utilitrio NuGetSelecionando a verso de um package:

12Using StaticO uso de mtodos estticos extremamente comum em C#:

Converso de valores (Classe System.Convert, por exemplo)

Clculos aritmticos (classe System.Math, por exemplo)13Using StaticEm verses anteriores do C#:

14Using StaticO que ?

Declarao do tipo que ser utilizado no incio de um arquivo .cs (atravs de uma instruo using static)

Forma simples para invocao de mtodos estticos

Cdigo mais enxuto15Using StaticO Visual Studio 2015 j oferece suporte atravs do IntelliSense:

16Using StaticO recurso Using Static no C# 6.0:

17Using StaticResultado dos testes:

18O operador nameofO que ?

Permite a obteno de nomes de variveis e parmetros (para possvel utilizao na gravao de registros de log)

Dispensa o uso de strings, as quais poderiam ficar com contedo invlido caso os elementos a que se referem fossem renomeados

Recurso disponvel atravs da palavra-chave nameof19O operador nameofO operador nameof no C# 6.0:

20O operador nameofResultado dos testes:

21Auto-Property InitializersEspecificao de valores default para propriedades em verses anteriores do C#:

No construtor de uma classe (exceto propriedades somente leitura)

Na declarao de atributos associados a propriedades22Auto-Property InitializersExemplo em verses anteriores do C#:

23Auto-Property InitializersO que ? :

Inicializao de propriedades (mesmo aquelas somente leitura) no prprio ponto em que so declaradas

Dispensa o uso de atributos privados, como acontecia anteriormente24Auto-Property InitializersExemplo de inicializao em C# 6.0:

25Auto-Property InitializersTestando a inicializao de propriedades:

26Auto-Property InitializersResultado dos testes:

27Inicializao de propriedades somente leitura a partir de um construtorAlm do mecanismo Auto-Property Initializer, agora tambm possvel a atribuio de valores a propriedades read-only no construtor de uma classe

Este recurso pode ser til no preenchimento de propriedades com base em parmetros informados a um construtor28Inicializao de propriedades somente leitura a partir de um construtorVerses anteriores da linguagem C#:

29Inicializao de propriedades somente leitura a partir de um construtorExemplo em C# 6.0:

30Expression-bodied MembersExpresses lambda

Disponveis desde o C# 3.0

Parte integrante da extenso LINQ (Language-Integrated Query)

Um tipo de funo annima que busca simplificar e tornar mais enxuto o cdigo

Expression-bodied Members

Implementao de elementos a partir de expresses lambda

Expression-bodied Property (para propriedades somente leitura)

Expression-bodied Function31Expression-bodied MembersExemplo de declarao de uma propriedade somente leitura:

32Expression-bodied MembersUtilizando uma Expression-bodied Property:

33Expression-bodied MembersTestando o uso de uma Expression-bodied Property:

34Expression-bodied MembersResultado do teste (Expression-bodied Property):

35Expression-bodied MembersExemplo de declarao de um mtodo simples:

36Expression-bodied MembersUtilizando uma Expression-bodied Function:

37Expression-bodied MembersTestando o uso de uma Expression-bodied Function:

38Expression-bodied MembersResultado do teste (Expression-bodied Function):

39Inicializao de instncias do tipo DictionaryAntes do C# 6.0 a inicializao de instncias baseadas no tipo Dictionary poderia ser feita de duas maneiras:

Atravs do mtodo Add, logo aps a gerao da instncia

Pares de chave-valor separados por { e }, durante a instanciao do objeto40Inicializao de instncias do tipo DictionaryUtilizando o mtodo Add:

41Inicializao de instncias do tipo DictionaryInicializando no momento da instanciao:

42Inicializao de instncias do tipo DictionaryCom o C# 6.0 possvel uma terceira sintaxe, baseada no uso de colchetes e que guarda semelhanas com o padro JSON:

43Inicializao de instncias do tipo DictionaryResultado da execuo da aplicao de testes:

44Exception FiltersDiferentes checagens envolvendo um mesmo tipo de exceo foravam ao uso de vrios ifs, em verses anteriores do C#:

45Exception FiltersImplementao da classe TesteException:

46Exception FiltersException Filters so um recurso do C# 6.0 que possibilita o uso de condies na prpria clusula catch (resultando em um cdigo mais elegante):

47Exception FiltersResultado da execuo da aplicao de testes:

48String InterpolationManipulao de strings desde as primeiras verses do .NET Framework:

Simples concatenao (tende a tornar o cdigo mais poludo no caso de sequncias grandes de texto)

Uso de placeholders (ndices numricos delimitados por chaves), em conjunto com mtodos como Format da classe String ou ainda, Write e WriteLine na classe Console

Embora os placeholders representem a melhor alternativa, a incluso de novos parmetros em strings j existentes um processo suscetvel a erros49String InterpolationUm primeiro exemplo de uso de placeholders:

50String InterpolationAlterando o exemplo anterior (incluso de um novo placeholder e alteraes no ndice dos demais):

51String InterpolationO que ?

Possibilidade de utilizar diretamente expresses ao invs de placeholders numa string (o que no significa que seja necessrio se valer de concatenao)

As strings que fazem uso deste mecanismo devem ser iniciadas por $ (dlar)

As expresses devem estar delimitadas por chaves

Dispensa o uso de mtodos como o Format da classe String52String InterpolationExemplo de uso deste recurso em C# 6.0:

53String InterpolationO IntelliSense j suporta tambm este mecanismo:

54String InterpolationAlm de variveis, propriedades e chamadas a mtodos, expresses baseadas no operador ? tambm podem ser empregadas:

55String InterpolationResultado da execuo do exemplo apresentado:

56Chamadas assncronas em blocos catch e finallyC# 5.0 => novo modelo para processamento assncrono

Palavras-chave async e await

Namespace System.Threading.Tasks, com classes como Task e Parallel

Grande utilidade na implementao de aplicaes visuais, sobretudo aquelas voltadas a dispositivos mveis

LimitaesImpossibilidade de chamadas assncronas em blocos catch e finally57Chamadas assncronas em blocos catch e finallyVisual Studio 2013 (ERRO):

58Chamadas assncronas em blocos catch e finallyC# 6.0:

59Null-conditional operatorNullReferenceExceptionDesatenoServio deixado pela metade

Necessidade de checagens, validando se referncias esto ou no preenchidas

Muitas verificaes ao longo de um sistema60Verses anteriores do C#:Null-conditional operator

61Null-conditional operatorO que ?

Smbolo ? acompanhando refernciasVariveisPropriedadesAtributos de classesMtodos que produzem algum retorno

Substitui o uso de ifs62C# 6.0 (cdigo mais enxuto e de rpida leitura):Null-conditional operator

63C# 6.0 resultado do bloco de testes:Null-conditional operator

64Null-conditional operator e delegatesDelegates

Implementao de eventos na plataforma .NET

Uso de tipos derivados da classe EventArgs (namespace System)

Palavras-chave delegate (declarao) e event (evento baseado em um delegate)65Exemplo de implementao de delegate:Null-conditional operator e delegates

66Exemplo de classe na qual utilizado um evento:Null-conditional operator e delegates

67Utilizando o operador ? => ERRONull-conditional operator e delegates

68Soluo => utilizar o mtodo Invoke:Null-conditional operator e delegates

69Testando o uso do operador ? com delegates:Null-conditional operator e delegates

70Resultado do teste:Null-conditional operator e delegates

71Dvidas, sugestes???72RefernciasC# 6.0 Novos Recursos Parte 1http://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 apresentaohttps://gallery.technet.microsoft.com/C-60-Novos-Recursos-d22a7d9d73Obrigado!!!

74