C# 6.0 - Novos Recursos

Download C# 6.0 - Novos Recursos

Post on 14-Apr-2016

10 views

Category:

Documents

0 download

Embed Size (px)

DESCRIPTION

C# 6.0 - Novos Recursos - Renato Groffe

TRANSCRIPT

<p>C# 6.0 - Novos RecursosRenato GroffeAgosto/2015</p> <p>1Apresentao Renato GroffeMais de 15 anos de experincia na rea de Tecnologia</p> <p>Ps-graduao em Engenharia de Software nfase em SOA</p> <p>MBA em Business Intelligence</p> <p>Graduao em Sistemas de Informao</p> <p>Tcnico em Processamento de Dados</p> <p>MTAC (Microsoft Technical Audience Contributor), MCP, Microsoft Specialist, MCTS, OCA, ITIL, COBIT2ContatosPgina no Facebookhttps://www.facebook.com/RenatoGroffeSW</p> <p>Perfil no Facebookhttps://www.facebook.com/renatogroff</p> <p>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</p> <p>A IDE posteriormente foi renomada para Visual Studio 2015, contando com diversas melhorias lanamento em Julho/2015 da verso RTM</p> <p>C# 6.0 nova verso da linguagem, tambm com melhorias visando simplificar o desenvolvimento</p> <p>.NET Framework 4.6, com novo compilador (Roslyn)</p> <p>Boa parte da plataforma .NET agora open source, estando hospedada no GitHub</p> <p>Plataforma Web totalmente reformulada =&gt; 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):</p> <p>7Debug de expresses lambdaAt o Visual Studio 2013 (ERRO):</p> <p>8Debug de expresses lambdaO Visual Studio 2015 finalmente suporta esta funcionalidade:</p> <p>9A nova verso do utilitrio NuGetInterface nova inteiramente reformulada</p> <p>A interface tambm deixou de ser um formulrio modal</p> <p>Possibilidade de seleo da verso de um package a partir de um combo</p> <p>Funcionalidade para consolidar as diferentes verses de um package dentro de uma mesma soluo</p> <p>Resoluo automtica de conflitos envolvendo diferentes verses de uma mesma referncia10A nova verso do utilitrio NuGetNova interface:</p> <p>11A nova verso do utilitrio NuGetSelecionando a verso de um package:</p> <p>12Using StaticO uso de mtodos estticos extremamente comum em C#:</p> <p>Converso de valores (Classe System.Convert, por exemplo)</p> <p>Clculos aritmticos (classe System.Math, por exemplo)13Using StaticEm verses anteriores do C#:</p> <p>14Using StaticO que ?</p> <p>Declarao do tipo que ser utilizado no incio de um arquivo .cs (atravs de uma instruo using static)</p> <p>Forma simples para invocao de mtodos estticos</p> <p>Cdigo mais enxuto15Using StaticO Visual Studio 2015 j oferece suporte atravs do IntelliSense:</p> <p>16Using StaticO recurso Using Static no C# 6.0:</p> <p>17Using StaticResultado dos testes:</p> <p>18O operador nameofO que ?</p> <p>Permite a obteno de nomes de variveis e parmetros (para possvel utilizao na gravao de registros de log)</p> <p>Dispensa o uso de strings, as quais poderiam ficar com contedo invlido caso os elementos a que se referem fossem renomeados</p> <p>Recurso disponvel atravs da palavra-chave nameof19O operador nameofO operador nameof no C# 6.0:</p> <p>20O operador nameofResultado dos testes:</p> <p>21Auto-Property InitializersEspecificao de valores default para propriedades em verses anteriores do C#:</p> <p>No construtor de uma classe (exceto propriedades somente leitura)</p> <p>Na declarao de atributos associados a propriedades22Auto-Property InitializersExemplo em verses anteriores do C#:</p> <p>23Auto-Property InitializersO que ? :</p> <p>Inicializao de propriedades (mesmo aquelas somente leitura) no prprio ponto em que so declaradas</p> <p>Dispensa o uso de atributos privados, como acontecia anteriormente24Auto-Property InitializersExemplo de inicializao em C# 6.0:</p> <p>25Auto-Property InitializersTestando a inicializao de propriedades:</p> <p>26Auto-Property InitializersResultado dos testes:</p> <p>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</p> <p>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#:</p> <p>29Inicializao de propriedades somente leitura a partir de um construtorExemplo em C# 6.0:</p> <p>30Expression-bodied MembersExpresses lambda</p> <p>Disponveis desde o C# 3.0</p> <p>Parte integrante da extenso LINQ (Language-Integrated Query)</p> <p>Um tipo de funo annima que busca simplificar e tornar mais enxuto o cdigo</p> <p>Expression-bodied Members</p> <p>Implementao de elementos a partir de expresses lambda</p> <p>Expression-bodied Property (para propriedades somente leitura)</p> <p>Expression-bodied Function31Expression-bodied MembersExemplo de declarao de uma propriedade somente leitura:</p> <p>32Expression-bodied MembersUtilizando uma Expression-bodied Property:</p> <p>33Expression-bodied MembersTestando o uso de uma Expression-bodied Property:</p> <p>34Expression-bodied MembersResultado do teste (Expression-bodied Property):</p> <p>35Expression-bodied MembersExemplo de declarao de um mtodo simples:</p> <p>36Expression-bodied MembersUtilizando uma Expression-bodied Function:</p> <p>37Expression-bodied MembersTestando o uso de uma Expression-bodied Function:</p> <p>38Expression-bodied MembersResultado do teste (Expression-bodied Function):</p> <p>39Inicializao de instncias do tipo DictionaryAntes do C# 6.0 a inicializao de instncias baseadas no tipo Dictionary poderia ser feita de duas maneiras:</p> <p>Atravs do mtodo Add, logo aps a gerao da instncia</p> <p>Pares de chave-valor separados por { e }, durante a instanciao do objeto40Inicializao de instncias do tipo DictionaryUtilizando o mtodo Add:</p> <p>41Inicializao de instncias do tipo DictionaryInicializando no momento da instanciao:</p> <p>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:</p> <p>43Inicializao de instncias do tipo DictionaryResultado da execuo da aplicao de testes:</p> <p>44Exception FiltersDiferentes checagens envolvendo um mesmo tipo de exceo foravam ao uso de vrios ifs, em verses anteriores do C#:</p> <p>45Exception FiltersImplementao da classe TesteException:</p> <p>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):</p> <p>47Exception FiltersResultado da execuo da aplicao de testes:</p> <p>48String InterpolationManipulao de strings desde as primeiras verses do .NET Framework:</p> <p>Simples concatenao (tende a tornar o cdigo mais poludo no caso de sequncias grandes de texto)</p> <p>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</p> <p>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:</p> <p>50String InterpolationAlterando o exemplo anterior (incluso de um novo placeholder e alteraes no ndice dos demais):</p> <p>51String InterpolationO que ?</p> <p>Possibilidade de utilizar diretamente expresses ao invs de placeholders numa string (o que no significa que seja necessrio se valer de concatenao)</p> <p>As strings que fazem uso deste mecanismo devem ser iniciadas por $ (dlar)</p> <p>As expresses devem estar delimitadas por chaves</p> <p>Dispensa o uso de mtodos como o Format da classe String52String InterpolationExemplo de uso deste recurso em C# 6.0:</p> <p>53String InterpolationO IntelliSense j suporta tambm este mecanismo:</p> <p>54String InterpolationAlm de variveis, propriedades e chamadas a mtodos, expresses baseadas no operador ? tambm podem ser empregadas:</p> <p>55String InterpolationResultado da execuo do exemplo apresentado:</p> <p>56Chamadas assncronas em blocos catch e finallyC# 5.0 =&gt; novo modelo para processamento assncrono</p> <p>Palavras-chave async e await</p> <p>Namespace System.Threading.Tasks, com classes como Task e Parallel</p> <p>Grande utilidade na implementao de aplicaes visuais, sobretudo aquelas voltadas a dispositivos mveis</p> <p>LimitaesImpossibilidade de chamadas assncronas em blocos catch e finally57Chamadas assncronas em blocos catch e finallyVisual Studio 2013 (ERRO):</p> <p>58Chamadas assncronas em blocos catch e finallyC# 6.0:</p> <p>59Null-conditional operatorNullReferenceExceptionDesatenoServio deixado pela metade</p> <p>Necessidade de checagens, validando se referncias esto ou no preenchidas</p> <p>Muitas verificaes ao longo de um sistema60Verses anteriores do C#:Null-conditional operator</p> <p>61Null-conditional operatorO que ?</p> <p>Smbolo ? acompanhando refernciasVariveisPropriedadesAtributos de classesMtodos que produzem algum retorno</p> <p>Substitui o uso de ifs62C# 6.0 (cdigo mais enxuto e de rpida leitura):Null-conditional operator</p> <p>63C# 6.0 resultado do bloco de testes:Null-conditional operator</p> <p>64Null-conditional operator e delegatesDelegates</p> <p>Implementao de eventos na plataforma .NET</p> <p>Uso de tipos derivados da classe EventArgs (namespace System)</p> <p>Palavras-chave delegate (declarao) e event (evento baseado em um delegate)65Exemplo de implementao de delegate:Null-conditional operator e delegates</p> <p>66Exemplo de classe na qual utilizado um evento:Null-conditional operator e delegates</p> <p>67Utilizando o operador ? =&gt; ERRONull-conditional operator e delegates</p> <p>68Soluo =&gt; utilizar o mtodo Invoke:Null-conditional operator e delegates</p> <p>69Testando o uso do operador ? com delegates:Null-conditional operator e delegates</p> <p>70Resultado do teste:Null-conditional operator e delegates</p> <p>71Dvidas, sugestes???72RefernciasC# 6.0 Novos Recursos Parte 1http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-1/</p> <p>C# 6.0 Novos Recursos Parte 2http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-2/</p> <p>C# 6.0 Novos Recursos Parte 3http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-3/</p> <p>C# 6.0 Novos Recursos Parte 4http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-4/</p> <p>C# 6.0 Novos Recursos Parte 5http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-5/</p> <p>Fontes dos exemplos abordados nesta apresentaohttps://gallery.technet.microsoft.com/C-60-Novos-Recursos-d22a7d9d73Obrigado!!!</p> <p>74</p>