C# 6.0 - Interopmix 2015

Download C# 6.0 - Interopmix 2015

Post on 21-Jan-2017

283 views

Category:

Software

1 download

Embed Size (px)

TRANSCRIPT

<p>Universal Windows Platform</p> <p>C# 6.0NOVOS RECURSOS</p> <p>Renato GroffeMicrosoft Technical Audience Contributor (MTAC), MCP, MCTS, OCA, ITIL, COBIT Mais de 15 anos de experincia na rea de TecnologiaPs-graduao em Engenharia de Software nfase em SOAMBA em Business IntelligenceGraduao em Sistemas de InformaoArticulista e Palestrante (Devmedia, .NET Magazine, Canal .NET, TechNet Wiki, .NET Coders, TI Selvagem)Tcnico em Processamento de DadosContatosFacebook: https://www.facebook.com/renatogroffCanal .NET: https://www.facebook.com/canaldotnetLinkedIn: http://br.linkedin.com/in/renatogroffe</p> <p>Agenda</p> <p>Visual Studio 2015, C# 6.0 e mais...</p> <p>Alguns recursos da nova verso do Visual Studio</p> <p>Novos recursos do C# 6.0</p> <p>Visual Studio 2015, C# 6.0 e mais...</p> <p>Visual Studio e o novo .NETLanamento 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 GitHubO namespace System.Web deixou de existirForte nfase em cloud computing, JSON e utilizao do NuGet</p> <p>O novo .NET Framework</p> <p>Alguns recursos da nova verso do Visual Studio</p> <p>Um novo tipo de atalhoSmbolo de uma lmpada (Light Bulb) Quick Actions Removendo using desnecessrios (exemplo):</p> <p>Debug de expresses lambdaO Visual Studio 2015 finalmente suporta esta funcionalidade:</p> <p>A 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 referncia</p> <p>A nova verso do utilitrio NuGetNova interface:</p> <p>Novos recursos do C# 6.0</p> <p>Using Static O 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 enxuto</p> <p>Using Static Exemplo</p> <p>Using Static O 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 enxuto</p> <p>Auto-Property Initializers O que so?Especificao 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 propriedades</p> <p>Auto-Property Initializers O que so?Exemplo em verses anteriores do C#:</p> <p>Auto-Property Initializers O que so?</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 anteriormente</p> <p>Auto-Property Initializers Exemplo</p> <p>Inicializao de propriedades somente leitura a partir de um construtor</p> <p>Alm 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 construtor</p> <p>Inicializao de propriedades somente leitura a partir de um construtorExemplo em C# 6.0:</p> <p>Expression-bodied Members O que so?</p> <p>Expresses 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 O que so?</p> <p>Implementao de elementos a partir de expresses lambda</p> <p>Expression-bodied Property (para propriedades somente leitura)</p> <p>Expression-bodied Function</p> <p>Expression-bodied Members PropriedadesAgora tambm:Antes:</p> <p>Expression-bodied Members MtodosAgora tambm:Antes:</p> <p>Exception Filters O que so?Diferentes checagens envolvendo um mesmo tipo de exceo foravam ao uso de vrios ifs, em verses anteriores do C#:</p> <p>Exception Filters O que so?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):</p> <p>String Interpolation O que ?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)</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 erros</p> <p>String Interpolation O que ?Exemplo de uso de placeholders:</p> <p>String Interpolation O que ?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 String</p> <p>O prprio IntelliSense j suporta tambm este mecanismo</p> <p>String Interpolation Exemplo</p> <p>Null-conditional operator O que ?NullReferenceExceptionDesatenoServio deixado pela metade</p> <p>Necessidade de checagens, validando se referncias esto ou no preenchidas</p> <p>Muitas verificaes ao longo de um sistema</p> <p>Null-conditional operator O que ?Verses anteriores do C#:</p> <p>Null-conditional operator O que ?Smbolo ? acompanhando refernciasVariveisPropriedadesAtributos de classesMtodos que produzem algum retorno</p> <p>Substitui o uso de ifs</p> <p>Null-conditional operator Exemplo</p> <p>Null-conditional operator DelegatesUtilizar o mtodo Invoke:</p> <p>Chamadas assncronas em blocos catch e finallyC# 5.0 =&gt; novo modelo para processamento assncronoPalavras-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 finally</p> <p>Chamadas assncronas em blocos catch e finally - Exemplo</p> <p>O operador nameof O 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 nameof</p> <p>O operador nameof Exemplo</p> <p>Inicializao 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 objeto</p> <p>Inicializao de instncias do tipo Dictionaryou</p> <p>Inicializao de instncias do tipo DictionaryCom o C# 6.0 possvel uma terceira sintaxe, baseada no uso de colchetes:</p> <p>C# 6.0 RefernciasGuia de Sobrevivncia: C# 6.0http://social.technet.microsoft.com/wiki/pt-br/contents/articles/32498.guia-de-sobrevivencia-c-6-0.aspx</p> <p>New Language Features in C# 6https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6</p> <p>Perguntas?</p> <p>Obrigado!</p>