C# 6.0 - Interopmix 2015

  • Published on
    21-Jan-2017

  • View
    281

  • Download
    1

Transcript

Universal Windows PlatformC# 6.0NOVOS RECURSOSRenato 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/renatogroffeAgendaVisual Studio 2015, C# 6.0 e mais...Alguns recursos da nova verso do Visual StudioNovos recursos do C# 6.0Visual Studio 2015, C# 6.0 e mais...Visual Studio e o novo .NETLanamento das verses de avaliao do Visual Studio 14 em 2014A IDE posteriormente foi renomada para Visual Studio 2015, contando com diversas melhorias lanamento em Julho/2015 da verso RTMC# 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 GitHubO namespace System.Web deixou de existirForte nfase em cloud computing, JSON e utilizao do NuGetO novo .NET FrameworkAlguns recursos da nova verso do Visual StudioUm novo tipo de atalhoSmbolo de uma lmpada (Light Bulb) Quick Actions Removendo using desnecessrios (exemplo):Debug de expresses lambdaO Visual Studio 2015 finalmente suporta esta funcionalidade:A nova verso do utilitrio NuGetInterface nova inteiramente reformuladaA interface tambm deixou de ser um formulrio modalPossibilidade de seleo da verso de um package a partir de um comboFuncionalidade para consolidar as diferentes verses de um package dentro de uma mesma soluoResoluo automtica de conflitos envolvendo diferentes verses de uma mesma refernciaA nova verso do utilitrio NuGetNova interface:Novos recursos do C# 6.0Using Static 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 estticosCdigo mais enxutoUsing Static ExemploUsing Static 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 estticosCdigo mais enxutoAuto-Property Initializers O que so?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 propriedadesAuto-Property Initializers O que so?Exemplo em verses anteriores do C#:Auto-Property Initializers O que so?Inicializao de propriedades (mesmo aquelas somente leitura) no prprio ponto em que so declaradasDispensa o uso de atributos privados, como acontecia anteriormenteAuto-Property Initializers ExemploInicializao 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 classeEste recurso pode ser til no preenchimento de propriedades com base em parmetros informados a um construtorInicializao de propriedades somente leitura a partir de um construtorExemplo em C# 6.0:Expression-bodied Members O que so?Expresses lambda:Disponveis desde o C# 3.0Parte integrante da extenso LINQ (Language-Integrated Query)Um tipo de funo annima que busca simplificar e tornar mais enxuto o cdigoExpression-bodied Members O que so?Implementao de elementos a partir de expresses lambdaExpression-bodied Property (para propriedades somente leitura)Expression-bodied FunctionExpression-bodied Members PropriedadesAgora tambm:Antes:Expression-bodied Members MtodosAgora tambm:Antes:Exception Filters O que so?Diferentes checagens envolvendo um mesmo tipo de exceo foravam ao uso de vrios ifs, em verses anteriores do C#: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):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)Uso de placeholders (ndices numricos delimitados por chaves), em conjunto com mtodos como Format da classe String ou ainda, Write e WriteLine na classe ConsoleEmbora os placeholders representem a melhor alternativa, a incluso de novos parmetros em strings j existentes um processo suscetvel a errosString Interpolation O que ?Exemplo de uso de placeholders: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)As strings que fazem uso deste mecanismo devem ser iniciadas por $ (dlar)As expresses devem estar delimitadas por chavesDispensa o uso de mtodos como o Format da classe StringO prprio IntelliSense j suporta tambm este mecanismoString Interpolation ExemploNull-conditional operator O que ?NullReferenceExceptionDesatenoServio deixado pela metadeNecessidade de checagens, validando se referncias esto ou no preenchidasMuitas verificaes ao longo de um sistemaNull-conditional operator O que ?Verses anteriores do C#:Null-conditional operator O que ?Smbolo ? acompanhando refernciasVariveisPropriedadesAtributos de classesMtodos que produzem algum retornoSubstitui o uso de ifsNull-conditional operator ExemploNull-conditional operator DelegatesUtilizar o mtodo Invoke:Chamadas assncronas em blocos catch e finallyC# 5.0 => novo modelo para processamento assncronoPalavras-chave async e awaitNamespace System.Threading.Tasks, com classes como Task e ParallelGrande utilidade na implementao de aplicaes visuais, sobretudo aquelas voltadas a dispositivos mveisLimitaesImpossibilidade de chamadas assncronas em blocos catch e finallyChamadas assncronas em blocos catch e finally - ExemploO operador nameof 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 renomeadosRecurso disponvel atravs da palavra-chave nameofO operador nameof ExemploInicializao 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 instnciaPares de chave-valor separados por { e }, durante a instanciao do objetoInicializao de instncias do tipo DictionaryouInicializao de instncias do tipo DictionaryCom o C# 6.0 possvel uma terceira sintaxe, baseada no uso de colchetes: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.aspxNew Language Features in C# 6https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6Perguntas?Obrigado!