C# 6.0 - Novos Recursos (Agosto/2015)

Download C# 6.0 - Novos Recursos (Agosto/2015)

Post on 15-Aug-2015

850 views

Category:

Software

1 download

Embed Size (px)

TRANSCRIPT

<ol><li> 1. Renato Groffe Agosto/2015 </li><li> 2. Mais 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, COBIT </li><li> 3. Pgina no Facebook https://www.facebook.com/RenatoGroffeSW Perfil no Facebook https://www.facebook.com/renatogroff LinkedIn http://br.linkedin.com/in/renatogroffe </li><li> 4. Microsoft Visual Studio Community 2015 https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx </li><li> 5. Visual Studio 2015 e C# 6.0 Alguns recursos da nova verso do Visual Studio Using Static O operador nameof Auto-Property Initializers Inicializao de propriedades somente leitura a partir de um construtor Expression-bodied Members Inicializao de instncias do tipo Dictionary Exception Filters Implementao de construtores sem parmetros em structs String Interpolation Chamadas assncronas em blocos catch e finally Null-conditional operator Null-conditional operator e delegates </li><li> 6. Lanamento 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 =&gt; ASP.NET 5 e MVC 6 O namespace System.Web deixou de existir Forte nfase em cloud computing, JSON e utilizao do NuGet </li><li> 7. Smbolo de uma lmpada (Light Bulb) Quick Actions Removendo using desnecessrios (exemplo): </li><li> 8. At o Visual Studio 2013 (ERRO): </li><li> 9. O Visual Studio 2015 finalmente suporta esta funcionalidade: </li><li> 10. Interface 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 referncia </li><li> 11. Nova interface: </li><li> 12. Selecionando a verso de um package: </li><li> 13. O uso de mtodos estticos extremamente comum em C#: Converso de valores (Classe System.Convert, por exemplo) Clculos aritmticos (classe System.Math, por exemplo) </li><li> 14. Em verses anteriores do C#: </li><li> 15. O 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 enxuto </li><li> 16. O Visual Studio 2015 j oferece suporte atravs do IntelliSense: </li><li> 17. O recurso Using Static no C# 6.0: </li><li> 18. Resultado dos testes: </li><li> 19. O 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 nameof </li><li> 20. O operador nameof no C# 6.0: </li><li> 21. Resultado dos testes: </li><li> 22. Especificao 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 propriedades </li><li> 23. Exemplo em verses anteriores do C#: </li><li> 24. O que ? : Inicializao de propriedades (mesmo aquelas somente leitura) no prprio ponto em que so declaradas Dispensa o uso de atributos privados, como acontecia anteriormente </li><li> 25. Exemplo de inicializao em C# 6.0: </li><li> 26. Testando a inicializao de propriedades: </li><li> 27. Resultado dos testes: </li><li> 28. Alm 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 construtor </li><li> 29. Verses anteriores da linguagem C#: </li><li> 30. Exemplo em C# 6.0: </li><li> 31. Expresses 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 Function </li><li> 32. Exemplo de declarao de uma propriedade somente leitura: </li><li> 33. Utilizando uma Expression-bodied Property: </li><li> 34. Testando o uso de uma Expression-bodied Property: </li><li> 35. Resultado do teste (Expression-bodied Property): </li><li> 36. Exemplo de declarao de um mtodo simples: </li><li> 37. Utilizando uma Expression-bodied Function: </li><li> 38. Testando o uso de uma Expression-bodied Function: </li><li> 39. Resultado do teste (Expression-bodied Function): </li><li> 40. Antes 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 objeto </li><li> 41. Utilizando o mtodo Add: </li><li> 42. Inicializando no momento da instanciao: </li><li> 43. Com o C# 6.0 possvel uma terceira sintaxe, baseada no uso de colchetes e que guarda semelhanas com o padro JSON: </li><li> 44. Resultado da execuo da aplicao de testes: </li><li> 45. Diferentes checagens envolvendo um mesmo tipo de exceo foravam ao uso de vrios ifs, em verses anteriores do C#: </li><li> 46. Implementao da classe TesteException: </li><li> 47. Exception Filters so um recurso do C# 6.0 que possibilita o uso de condies na prpria clusula catch (resultando em um cdigo mais elegante): </li><li> 48. Resultado da execuo da aplicao de testes: </li><li> 49. Manipulao 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 erros </li><li> 50. Um primeiro exemplo de uso de placeholders: </li><li> 51. Alterando o exemplo anterior (incluso de um novo placeholder e alteraes no ndice dos demais): </li><li> 52. O 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 String </li><li> 53. Exemplo de uso deste recurso em C# 6.0: </li><li> 54. O IntelliSense j suporta tambm este mecanismo: </li><li> 55. Alm de variveis, propriedades e chamadas a mtodos, expresses baseadas no operador ? tambm podem ser empregadas: </li><li> 56. Resultado da execuo do exemplo apresentado: </li><li> 57. C# 5.0 =&gt; 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 Limitaes Impossibilidade de chamadas assncronas em blocos catch e finally </li><li> 58. Visual Studio 2013 (ERRO): </li><li> 59. C# 6.0: </li><li> 60. NullReferenceException Desateno Servio deixado pela metade Necessidade de checagens, validando se referncias esto ou no preenchidas Muitas verificaes ao longo de um sistema </li><li> 61. Verses anteriores do C#: </li><li> 62. O que ? Smbolo ? acompanhando referncias Variveis Propriedades Atributos de classes Mtodos que produzem algum retorno Substitui o uso de ifs </li><li> 63. C# 6.0 (cdigo mais enxuto e de rpida leitura): </li><li> 64. C# 6.0 resultado do bloco de testes: </li><li> 65. Delegates 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) </li><li> 66. Exemplo de implementao de delegate: </li><li> 67. Exemplo de classe na qual utilizado um evento: </li><li> 68. Utilizando o operador ? =&gt; ERRO </li><li> 69. Soluo =&gt; utilizar o mtodo Invoke: </li><li> 70. Testando o uso do operador ? com delegates: </li><li> 71. Resultado do teste: </li><li> 72. Dvidas, sugestes??? </li><li> 73. C# 6.0 Novos Recursos Parte 1 http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-1/ C# 6.0 Novos Recursos Parte 2 http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-2/ C# 6.0 Novos Recursos Parte 3 http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-3/ C# 6.0 Novos Recursos Parte 4 http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-4/ C# 6.0 Novos Recursos Parte 5 http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-5/ Fontes dos exemplos abordados nesta apresentao https://gallery.technet.microsoft.com/C-60-Novos-Recursos-d22a7d9d </li><li> 74. Obrigado!!! </li></ol>