C# 6.0 - DotNetBaixada - Novembro/2015

  • Published on
    23-Jan-2018

  • View
    613

  • Download
    2

Embed Size (px)

Transcript

  • C# 6.0NOVOS RECURSOS

  • Renato GroffeMicrosoft Technical Audience Contributor (MTAC), MCP, MCTS, OCA, ITIL, COBIT

    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

    Articulista e Palestrante (Devmedia, .NET Magazine, Canal .NET, TechNet Wiki,

    .NET Coders, TI Selvagem)

    Tcnico em Processamento de Dados

    Contatos Facebook: https://www.facebook.com/renatogroff

    Canal .NET: https://www.facebook.com/canaldotnet

    LinkedIn: http://br.linkedin.com/in/renatogroffe

    https://www.facebook.com/renatogroffhttps://www.facebook.com/canaldotnethttp://br.linkedin.com/in/renatogroffe

  • Agenda

    Visual Studio 2015, C# 6.0 e mais...

    Alguns recursos da nova verso do Visual Studio

    Novos recursos do C# 6.0

  • Visual Studio 2015, C# 6.0 e mais...

  • Visual Studio e o novo .NET 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

    O namespace System.Web deixou de existir

    Forte nfase em cloud computing, JSON e utilizao do NuGet

  • O novo .NET Framework

  • Alguns recursos da nova verso do Visual Studio

  • Um 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 NuGet

    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

  • A nova verso do utilitrio NuGetNova interface:

  • Novos recursos do C# 6.0

  • Using 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 estticos

    Cdigo mais enxuto

  • Using Static Exemplo

  • Auto-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 propriedades

  • Auto-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 declaradas

    Dispensa o uso de atributos privados, como acontecia anteriormente

  • Auto-Property Initializers Exemplo

  • Inicializao de propriedades somente leitura a partir de um construtor

    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

  • Inicializao de propriedades somente leitura a partir de um construtor

    Exemplo em C# 6.0:

  • Expression-bodied Members O que so?

    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 O que so?

    Implementao de elementos a partir de expresses lambda

    Expression-bodied Property (para propriedades somente leitura)

    Expression-bodied Function

  • Expression-bodied Members Propriedades

    Agora tambm:Antes:

  • Expression-bodied Members Mtodos

    Agora 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 Console

    Embora os placeholders representem a melhor alternativa, a incluso de novos parmetros em strings j existentes um processo suscetvel a erros

  • String Interpolation O que ?

    Exemplo de uso de placeholders:

  • String Interpolation O que ?

    Possibilidade de utilizar diretamente expresses ao invs de placeholdersnuma 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

    O prprio IntelliSense j suporta tambm este mecanismo

  • String Interpolation Exemplo

  • Null-conditional operator O que ?

    NullReferenceException

    Desateno

    Servio deixado pela metade

    Necessidade de checagens, validando se referncias esto ou no preenchidas

    Muitas verificaes ao longo de um sistema

  • Null-conditional operator O que ?

    Verses anteriores do C#:

  • Null-conditional operator O que ?

    Smbolo ? acompanhando referncias

    Variveis

    Propriedades

    Atributos de classes

    Mtodos que produzem algum retorno

    Substitui o uso de ifs

  • Null-conditional operator Exemplo

  • Null-conditional operator Delegates

    Utilizar o mtodo Invoke:

  • Chamadas assncronas em blocos catch e finally

    C# 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

    Limitaes Impossibilidade de chamadas assncronas em blocos catch e finally

  • Chamadas assncronas em blocos catch e finally - Exemplo

  • O 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 renomeados

    Recurso disponvel atravs da palavra-chave nameof

  • O operador nameof Exemplo

  • Inicializao de instncias do tipo Dictionary

    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

  • Inicializao de instncias do tipo Dictionary

    ou

  • Inicializao de instncias do tipo Dictionary

    Com o C# 6.0 possvel uma terceira sintaxe, baseada no uso de colchetes:

  • C# 6.0 Referncias

    Guia de Sobrevivncia: C# 6.0http://social.technet.microsoft.com/wiki/pt-br/contents/articles/32498.guia-de-sobrevivencia-c-6-0.aspx

    New Language Features in C# 6https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6

    http://social.technet.microsoft.com/wiki/pt-br/contents/articles/32498.guia-de-sobrevivencia-c-6-0.aspxhttps://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C#-6

  • Perguntas?

  • Obrigado!