SlideShare uma empresa Scribd logo
1 de 45
C# 6.0
NOVOS RECURSOS
Renato Groffe
Microsoft Technical Audience Contributor (MTAC), MCP, MCTS, OCA, ITIL, COBIT
Mais de 15 anos de experiência na área de Tecnologia
Pós-graduação em Engenharia de Software – ênfase em SOA
MBA em Business Intelligence
Graduação em Sistemas de Informação
Articulista e Palestrante (Devmedia, .NET Magazine, Canal .NET, TechNet Wiki,
.NET Coders, TI Selvagem)
Técnico 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
Agenda
◦ Visual Studio 2015, C# 6.0 e mais...
◦ Alguns recursos da nova versão do Visual Studio
◦ Novos recursos do C# 6.0
Visual Studio 2015, C# 6.0 e mais...
Visual Studio e o novo .NET
◦ Lançamento das versões de avaliação do Visual Studio “14” em 2014
◦ A IDE posteriormente foi renomada para Visual Studio 2015, contando com diversas melhorias →
lançamento em Julho/2015 da versão RTM
◦ C# 6.0 – nova versão da linguagem, também 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 utilização do NuGet
O novo .NET Framework
Alguns recursos da nova versão do Visual Studio
Um novo tipo de atalho
Símbolo de uma lâmpada (Light Bulb) – Quick Actions – Removendo using desnecessários (exemplo):
Debug de expressões lambda
O Visual Studio 2015 finalmente suporta esta funcionalidade:
A nova versão do utilitário NuGet
◦ Interface nova inteiramente reformulada
◦ A interface também deixou de ser um formulário modal
◦ Possibilidade de seleção da versão de um package a partir de um combo
◦ Funcionalidade para consolidar as diferentes versões de um package dentro de uma mesma
solução
◦ Resolução automática de conflitos envolvendo diferentes versões de uma mesma referência
A nova versão do utilitário NuGet
Nova interface:
Novos recursos do C# 6.0
Using Static – O que é?
◦Declaração do tipo que será utilizado no início de um arquivo
.cs (através de uma instrução “using static”)
◦Forma simples para invocação de métodos estáticos
◦Código mais enxuto
Using Static – Exemplo
Auto-Property Initializers – O que são?
Especificação de valores default para propriedades em versões
anteriores do C#:
◦ No construtor de uma classe (exceto propriedades somente leitura)
◦ Na declaração de atributos associados a propriedades
Auto-Property Initializers – O que são?
Exemplo em versões anteriores do C#:
Auto-Property Initializers – O que são?
◦ Inicialização de propriedades (mesmo aquelas somente leitura) no
próprio ponto em que são declaradas
◦ Dispensa o uso de atributos privados, como acontecia anteriormente
Auto-Property Initializers – Exemplo
Inicialização de propriedades somente
leitura a partir de um construtor
◦Além do mecanismo Auto-Property Initializer, agora também é
possível a atribuição de valores a propriedades read-only no
construtor de uma classe
◦Este recurso pode ser útil no preenchimento de propriedades
com base em parâmetros informados a um construtor
Inicialização de propriedades somente
leitura a partir de um construtor
Exemplo em C# 6.0:
Expression-bodied Members – O que são?
Expressões lambda:
◦ Disponíveis desde o C# 3.0
◦ Parte integrante da extensão LINQ (Language-Integrated Query)
◦ Um tipo de função anônima que busca simplificar e tornar mais
enxuto o código
Expression-bodied Members – O que são?
◦Implementação de elementos a partir de expressões lambda
◦Expression-bodied Property (para propriedades somente
leitura)
◦Expression-bodied Function
Expression-bodied Members – Propriedades
Agora também:Antes:
Expression-bodied Members – Métodos
Agora também:Antes:
Exception Filters – O que são?
Diferentes checagens
envolvendo um mesmo
tipo de exceção
forçavam ao uso de
vários “ifs”, em versões
anteriores do C#:
Exception Filters – O que são?
Exception Filters são um
recurso do C# 6.0 que
possibilita o uso de
condições na própria
cláusula catch
(resultando em um
código mais elegante):
String Interpolation – O que é?
Manipulação de strings desde as primeiras versões do .NET
Framework:
◦ Simples concatenação (tende a tornar o código mais poluído no caso de
sequências grandes de texto)
◦ Uso de placeholders (índices numéricos delimitados por chaves), em
conjunto com métodos como Format da classe String ou ainda, Write e
WriteLine na classe Console
◦ Embora os placeholders representem a melhor alternativa, a inclusão de
novos parâmetros em strings já existentes é um processo suscetível a erros
String Interpolation – O que é?
Exemplo de uso de placeholders:
String Interpolation – O que é?
◦ Possibilidade de utilizar diretamente expressões ao invés de placeholders
numa string (o que não significa que seja necessário se valer de
concatenação)
◦ As strings que fazem uso deste mecanismo devem ser iniciadas por “$”
(dólar)
◦ As expressões devem estar delimitadas por chaves
◦ Dispensa o uso de métodos como o Format da classe String
◦ O próprio IntelliSense já suporta também este mecanismo
String Interpolation – Exemplo
Null-conditional operator – O que é?
◦ NullReferenceException
◦ Desatenção
◦ Serviço deixado “pela metade”
◦ Necessidade de checagens, validando se referências estão ou não
preenchidas
◦ Muitas verificações ao longo de um sistema
Null-conditional operator – O que é?
Versões anteriores do C#:
Null-conditional operator – O que é?
◦ Símbolo “?” acompanhando referências
◦ Variáveis
◦ Propriedades
◦ Atributos de classes
◦ Métodos que produzem algum retorno
◦ Substitui o uso de “ifs”
Null-conditional operator – Exemplo
Null-conditional operator – Delegates
Utilizar o método Invoke:
Chamadas assíncronas em blocos catch e finally
C# 5.0 => novo modelo para processamento assíncrono
◦ Palavras-chave async e await
◦ Namespace System.Threading.Tasks, com classes como Task e Parallel
◦ Grande utilidade na implementação de aplicações visuais, sobretudo
aquelas voltadas a dispositivos móveis
Limitações
◦ Impossibilidade de chamadas assíncronas em blocos catch e finally
Chamadas assíncronas em blocos catch e finally - Exemplo
O operador nameof – O que é?
◦Permite a obtenção de nomes de variáveis e parâmetros (para
possível utilização na gravação de registros de log)
◦Dispensa o uso de strings, as quais poderiam ficar com
conteúdo inválido caso os elementos a que se referem fossem
renomeados
◦Recurso disponível através da palavra-chave “nameof”
O operador nameof – Exemplo
Inicialização de instâncias do tipo Dictionary
Antes do C# 6.0 a inicialização de instâncias baseadas no tipo
Dictionary poderia ser feita de duas maneiras:
◦ Através do método Add, logo após a geração da instância
◦ Pares de chave-valor separados por “{” e “}”, durante a instanciação do
objeto
Inicialização de instâncias do tipo Dictionary
ou
Inicialização de instâncias do tipo Dictionary
Com o C# 6.0 é possível uma terceira sintaxe, baseada no uso
de colchetes:
C# 6.0 Referências
◦ Guia de Sobrevivência: C# 6.0
http://social.technet.microsoft.com/wiki/pt-br/contents/articles/32498.guia-de-sobrevivencia-c-6-0.aspx
◦ New Language Features in C# 6
https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6
Perguntas?
Obrigado!

Mais conteúdo relacionado

Mais procurados

Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonIgor Sobreira
 
APIs do Jeito Certo
APIs do Jeito CertoAPIs do Jeito Certo
APIs do Jeito CertoRavan Scafi
 
Trabalhando de forma profissional com silex
Trabalhando de forma profissional com silexTrabalhando de forma profissional com silex
Trabalhando de forma profissional com silexMichael Douglas
 
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...Rogério Moraes de Carvalho
 
Cya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.jsCya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.jsMichael Douglas
 
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET CoredotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET CoreRogério Moraes de Carvalho
 
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...Rogério Moraes de Carvalho
 
Programando php com mais segurança
Programando php com mais segurançaProgramando php com mais segurança
Programando php com mais segurançaMichael Douglas
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Rogério Moraes de Carvalho
 
Delphi Parallel Programming Library
Delphi Parallel Programming LibraryDelphi Parallel Programming Library
Delphi Parallel Programming LibraryMario Guedes
 
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-ThreadDelphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-ThreadMario Guedes
 
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...Rogério Moraes de Carvalho
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#Leandro Silva
 
Introdução ao Node.js
Introdução ao Node.jsIntrodução ao Node.js
Introdução ao Node.jsEdgar Eler
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao TerraformLeandro Silva
 
Microsoft Community Launch 2010: .NET Framework 4
Microsoft Community Launch 2010: .NET Framework 4Microsoft Community Launch 2010: .NET Framework 4
Microsoft Community Launch 2010: .NET Framework 4Rogério Moraes de Carvalho
 

Mais procurados (20)

Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com Python
 
APIs do Jeito Certo
APIs do Jeito CertoAPIs do Jeito Certo
APIs do Jeito Certo
 
Trabalhando de forma profissional com silex
Trabalhando de forma profissional com silexTrabalhando de forma profissional com silex
Trabalhando de forma profissional com silex
 
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
 
Wisher
WisherWisher
Wisher
 
Cya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.jsCya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.js
 
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET CoredotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
 
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
 
Node JS - Parte 1
Node JS - Parte 1Node JS - Parte 1
Node JS - Parte 1
 
Programando php com mais segurança
Programando php com mais segurançaProgramando php com mais segurança
Programando php com mais segurança
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
 
Delphi Parallel Programming Library
Delphi Parallel Programming LibraryDelphi Parallel Programming Library
Delphi Parallel Programming Library
 
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-ThreadDelphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
 
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
 
Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#
 
Introdução ao Node.js
Introdução ao Node.jsIntrodução ao Node.js
Introdução ao Node.js
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao Terraform
 
Microsoft Community Launch 2010: .NET Framework 4
Microsoft Community Launch 2010: .NET Framework 4Microsoft Community Launch 2010: .NET Framework 4
Microsoft Community Launch 2010: .NET Framework 4
 

Semelhante a C# 6.0 Novos Recursos

C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)Renato Groff
 
C# 6.0 .net coders
C# 6.0   .net codersC# 6.0   .net coders
C# 6.0 .net codersRenato Groff
 
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...JP Clementi
 
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvemASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvemRogério Moraes de Carvalho
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETRenato Groff
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)Renato Groff
 
Construindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOpsConstruindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOpsCamila Carrera
 
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...Renato Groff
 
ASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev WeekASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev WeekRenato Groff
 
Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET Conf Local 201...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET Conf Local 201...Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET Conf Local 201...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET Conf Local 201...Renato Groff
 
Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Alexandre Tarifa
 
ASP.NET Core e Linux: Explorando novas fronteiras - Araras Dev - Julho/2017
ASP.NET Core e Linux: Explorando novas fronteiras - Araras Dev - Julho/2017ASP.NET Core e Linux: Explorando novas fronteiras - Araras Dev - Julho/2017
ASP.NET Core e Linux: Explorando novas fronteiras - Araras Dev - Julho/2017Renato Groff
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Renato Groff
 
Introdução ao framework CodeIgniter
Introdução ao framework CodeIgniterIntrodução ao framework CodeIgniter
Introdução ao framework CodeIgniterAnderson Gonçalves
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicRicardo Guerra Freitas
 
ASP.NET Core - iMasters - Março/2016
ASP.NET Core - iMasters - Março/2016ASP.NET Core - iMasters - Março/2016
ASP.NET Core - iMasters - Março/2016Renato Groff
 
ASP.NET Core e Linux: Explorando novas fronteiras - OneDay - Junho/2017
ASP.NET Core e Linux: Explorando novas fronteiras - OneDay - Junho/2017ASP.NET Core e Linux: Explorando novas fronteiras - OneDay - Junho/2017
ASP.NET Core e Linux: Explorando novas fronteiras - OneDay - Junho/2017Renato Groff
 

Semelhante a C# 6.0 Novos Recursos (20)

C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)
 
C# 6.0 .net coders
C# 6.0   .net codersC# 6.0   .net coders
C# 6.0 .net coders
 
Aop Aspect J 1.5.4
Aop Aspect J 1.5.4Aop Aspect J 1.5.4
Aop Aspect J 1.5.4
 
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
 
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvemASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
 
Aula1
Aula1Aula1
Aula1
 
Csharp
CsharpCsharp
Csharp
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)
 
Construindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOpsConstruindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOps
 
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...
 
ASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev WeekASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev Week
 
Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET Conf Local 201...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET Conf Local 201...Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET Conf Local 201...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET Conf Local 201...
 
Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010
 
ASP.NET Core e Linux: Explorando novas fronteiras - Araras Dev - Julho/2017
ASP.NET Core e Linux: Explorando novas fronteiras - Araras Dev - Julho/2017ASP.NET Core e Linux: Explorando novas fronteiras - Araras Dev - Julho/2017
ASP.NET Core e Linux: Explorando novas fronteiras - Araras Dev - Julho/2017
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
 
Introdução ao framework CodeIgniter
Introdução ao framework CodeIgniterIntrodução ao framework CodeIgniter
Introdução ao framework CodeIgniter
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual Basic
 
ASP.NET Core - iMasters - Março/2016
ASP.NET Core - iMasters - Março/2016ASP.NET Core - iMasters - Março/2016
ASP.NET Core - iMasters - Março/2016
 
ASP.NET Core e Linux: Explorando novas fronteiras - OneDay - Junho/2017
ASP.NET Core e Linux: Explorando novas fronteiras - OneDay - Junho/2017ASP.NET Core e Linux: Explorando novas fronteiras - OneDay - Junho/2017
ASP.NET Core e Linux: Explorando novas fronteiras - OneDay - Junho/2017
 

Mais de Renato Groff

Microsoft Azure role-based certifications valem a pena? | Interop Day Edição ...
Microsoft Azure role-based certifications valem a pena? | Interop Day Edição ...Microsoft Azure role-based certifications valem a pena? | Interop Day Edição ...
Microsoft Azure role-based certifications valem a pena? | Interop Day Edição ...Renato Groff
 
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020Renato Groff
 
Como o Microsoft Azure pode melhorar o desenvolvimento de seu Back-End? | Dev...
Como o Microsoft Azure pode melhorar o desenvolvimento de seu Back-End? | Dev...Como o Microsoft Azure pode melhorar o desenvolvimento de seu Back-End? | Dev...
Como o Microsoft Azure pode melhorar o desenvolvimento de seu Back-End? | Dev...Renato Groff
 
Como avançar na Power Platform com Azure Functions e Logic Apps | MVPConf Lat...
Como avançar na Power Platform com Azure Functions e Logic Apps | MVPConf Lat...Como avançar na Power Platform com Azure Functions e Logic Apps | MVPConf Lat...
Como avançar na Power Platform com Azure Functions e Logic Apps | MVPConf Lat...Renato Groff
 
GitHub Actions: descomplicando o build/deployment automatizados | MVPConf Lat...
GitHub Actions: descomplicando o build/deployment automatizados | MVPConf Lat...GitHub Actions: descomplicando o build/deployment automatizados | MVPConf Lat...
GitHub Actions: descomplicando o build/deployment automatizados | MVPConf Lat...Renato Groff
 
A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No...
A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No...A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No...
A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No...Renato Groff
 
Polly: aplicações .NET resilientes e um melhor tratamento de falhas | MVPConf...
Polly: aplicações .NET resilientes e um melhor tratamento de falhas | MVPConf...Polly: aplicações .NET resilientes e um melhor tratamento de falhas | MVPConf...
Polly: aplicações .NET resilientes e um melhor tratamento de falhas | MVPConf...Renato Groff
 
Containers no Azure: Docker, Kubernetes e suas diferentes possibilidades | MV...
Containers no Azure: Docker, Kubernetes e suas diferentes possibilidades | MV...Containers no Azure: Docker, Kubernetes e suas diferentes possibilidades | MV...
Containers no Azure: Docker, Kubernetes e suas diferentes possibilidades | MV...Renato Groff
 
Docker: dicas e truques para o dia a dia | MVPConf Latam 2020
Docker: dicas e truques para o dia a dia | MVPConf Latam 2020Docker: dicas e truques para o dia a dia | MVPConf Latam 2020
Docker: dicas e truques para o dia a dia | MVPConf Latam 2020Renato Groff
 
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020Renato Groff
 
.NET Core + Serverless: Desenvolvimento Multiplataforma com Azure Functions |...
.NET Core + Serverless: Desenvolvimento Multiplataforma com Azure Functions |....NET Core + Serverless: Desenvolvimento Multiplataforma com Azure Functions |...
.NET Core + Serverless: Desenvolvimento Multiplataforma com Azure Functions |...Renato Groff
 
Aplicações Distribuídas com .NET | TDC Recife Online 2020
Aplicações Distribuídas com .NET | TDC Recife Online 2020Aplicações Distribuídas com .NET | TDC Recife Online 2020
Aplicações Distribuídas com .NET | TDC Recife Online 2020Renato Groff
 
Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020
Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020
Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020Renato Groff
 
Serverless + Integrações com BDs: Azure Functions e Logic Apps - SQLSaturday ...
Serverless + Integrações com BDs: Azure Functions e Logic Apps - SQLSaturday ...Serverless + Integrações com BDs: Azure Functions e Logic Apps - SQLSaturday ...
Serverless + Integrações com BDs: Azure Functions e Logic Apps - SQLSaturday ...Renato Groff
 
Boas práticas de segurança no acesso a dados em Web Apps - SQLSaturday #972 -...
Boas práticas de segurança no acesso a dados em Web Apps - SQLSaturday #972 -...Boas práticas de segurança no acesso a dados em Web Apps - SQLSaturday #972 -...
Boas práticas de segurança no acesso a dados em Web Apps - SQLSaturday #972 -...Renato Groff
 
.NET: passado, presente e futuro | Semana FCI 2020 - Mackenzie
.NET: passado, presente e futuro | Semana FCI 2020 - Mackenzie.NET: passado, presente e futuro | Semana FCI 2020 - Mackenzie
.NET: passado, presente e futuro | Semana FCI 2020 - MackenzieRenato Groff
 
Docker: visão geral e primeiros passos | Fatec Praia Grande - Semana Tecnológ...
Docker: visão geral e primeiros passos | Fatec Praia Grande - Semana Tecnológ...Docker: visão geral e primeiros passos | Fatec Praia Grande - Semana Tecnológ...
Docker: visão geral e primeiros passos | Fatec Praia Grande - Semana Tecnológ...Renato Groff
 
Kubernetes na Nuvem | Minicurso Gratuito - Azure na Prática
Kubernetes na Nuvem | Minicurso Gratuito - Azure na PráticaKubernetes na Nuvem | Minicurso Gratuito - Azure na Prática
Kubernetes na Nuvem | Minicurso Gratuito - Azure na PráticaRenato Groff
 
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado | Setembro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado | Setembro-2020Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado | Setembro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado | Setembro-2020Renato Groff
 
Sobrevoando os serviços do Azure | TDC São Paulo Online 2020
Sobrevoando os serviços do Azure | TDC São Paulo Online 2020Sobrevoando os serviços do Azure | TDC São Paulo Online 2020
Sobrevoando os serviços do Azure | TDC São Paulo Online 2020Renato Groff
 

Mais de Renato Groff (20)

Microsoft Azure role-based certifications valem a pena? | Interop Day Edição ...
Microsoft Azure role-based certifications valem a pena? | Interop Day Edição ...Microsoft Azure role-based certifications valem a pena? | Interop Day Edição ...
Microsoft Azure role-based certifications valem a pena? | Interop Day Edição ...
 
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020
 
Como o Microsoft Azure pode melhorar o desenvolvimento de seu Back-End? | Dev...
Como o Microsoft Azure pode melhorar o desenvolvimento de seu Back-End? | Dev...Como o Microsoft Azure pode melhorar o desenvolvimento de seu Back-End? | Dev...
Como o Microsoft Azure pode melhorar o desenvolvimento de seu Back-End? | Dev...
 
Como avançar na Power Platform com Azure Functions e Logic Apps | MVPConf Lat...
Como avançar na Power Platform com Azure Functions e Logic Apps | MVPConf Lat...Como avançar na Power Platform com Azure Functions e Logic Apps | MVPConf Lat...
Como avançar na Power Platform com Azure Functions e Logic Apps | MVPConf Lat...
 
GitHub Actions: descomplicando o build/deployment automatizados | MVPConf Lat...
GitHub Actions: descomplicando o build/deployment automatizados | MVPConf Lat...GitHub Actions: descomplicando o build/deployment automatizados | MVPConf Lat...
GitHub Actions: descomplicando o build/deployment automatizados | MVPConf Lat...
 
A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No...
A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No...A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No...
A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No...
 
Polly: aplicações .NET resilientes e um melhor tratamento de falhas | MVPConf...
Polly: aplicações .NET resilientes e um melhor tratamento de falhas | MVPConf...Polly: aplicações .NET resilientes e um melhor tratamento de falhas | MVPConf...
Polly: aplicações .NET resilientes e um melhor tratamento de falhas | MVPConf...
 
Containers no Azure: Docker, Kubernetes e suas diferentes possibilidades | MV...
Containers no Azure: Docker, Kubernetes e suas diferentes possibilidades | MV...Containers no Azure: Docker, Kubernetes e suas diferentes possibilidades | MV...
Containers no Azure: Docker, Kubernetes e suas diferentes possibilidades | MV...
 
Docker: dicas e truques para o dia a dia | MVPConf Latam 2020
Docker: dicas e truques para o dia a dia | MVPConf Latam 2020Docker: dicas e truques para o dia a dia | MVPConf Latam 2020
Docker: dicas e truques para o dia a dia | MVPConf Latam 2020
 
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020
 
.NET Core + Serverless: Desenvolvimento Multiplataforma com Azure Functions |...
.NET Core + Serverless: Desenvolvimento Multiplataforma com Azure Functions |....NET Core + Serverless: Desenvolvimento Multiplataforma com Azure Functions |...
.NET Core + Serverless: Desenvolvimento Multiplataforma com Azure Functions |...
 
Aplicações Distribuídas com .NET | TDC Recife Online 2020
Aplicações Distribuídas com .NET | TDC Recife Online 2020Aplicações Distribuídas com .NET | TDC Recife Online 2020
Aplicações Distribuídas com .NET | TDC Recife Online 2020
 
Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020
Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020
Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020
 
Serverless + Integrações com BDs: Azure Functions e Logic Apps - SQLSaturday ...
Serverless + Integrações com BDs: Azure Functions e Logic Apps - SQLSaturday ...Serverless + Integrações com BDs: Azure Functions e Logic Apps - SQLSaturday ...
Serverless + Integrações com BDs: Azure Functions e Logic Apps - SQLSaturday ...
 
Boas práticas de segurança no acesso a dados em Web Apps - SQLSaturday #972 -...
Boas práticas de segurança no acesso a dados em Web Apps - SQLSaturday #972 -...Boas práticas de segurança no acesso a dados em Web Apps - SQLSaturday #972 -...
Boas práticas de segurança no acesso a dados em Web Apps - SQLSaturday #972 -...
 
.NET: passado, presente e futuro | Semana FCI 2020 - Mackenzie
.NET: passado, presente e futuro | Semana FCI 2020 - Mackenzie.NET: passado, presente e futuro | Semana FCI 2020 - Mackenzie
.NET: passado, presente e futuro | Semana FCI 2020 - Mackenzie
 
Docker: visão geral e primeiros passos | Fatec Praia Grande - Semana Tecnológ...
Docker: visão geral e primeiros passos | Fatec Praia Grande - Semana Tecnológ...Docker: visão geral e primeiros passos | Fatec Praia Grande - Semana Tecnológ...
Docker: visão geral e primeiros passos | Fatec Praia Grande - Semana Tecnológ...
 
Kubernetes na Nuvem | Minicurso Gratuito - Azure na Prática
Kubernetes na Nuvem | Minicurso Gratuito - Azure na PráticaKubernetes na Nuvem | Minicurso Gratuito - Azure na Prática
Kubernetes na Nuvem | Minicurso Gratuito - Azure na Prática
 
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado | Setembro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado | Setembro-2020Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado | Setembro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado | Setembro-2020
 
Sobrevoando os serviços do Azure | TDC São Paulo Online 2020
Sobrevoando os serviços do Azure | TDC São Paulo Online 2020Sobrevoando os serviços do Azure | TDC São Paulo Online 2020
Sobrevoando os serviços do Azure | TDC São Paulo Online 2020
 

C# 6.0 Novos Recursos

  • 2. Renato Groffe Microsoft Technical Audience Contributor (MTAC), MCP, MCTS, OCA, ITIL, COBIT Mais de 15 anos de experiência na área de Tecnologia Pós-graduação em Engenharia de Software – ênfase em SOA MBA em Business Intelligence Graduação em Sistemas de Informação Articulista e Palestrante (Devmedia, .NET Magazine, Canal .NET, TechNet Wiki, .NET Coders, TI Selvagem) Técnico 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
  • 3. Agenda ◦ Visual Studio 2015, C# 6.0 e mais... ◦ Alguns recursos da nova versão do Visual Studio ◦ Novos recursos do C# 6.0
  • 4. Visual Studio 2015, C# 6.0 e mais...
  • 5. Visual Studio e o novo .NET ◦ Lançamento das versões de avaliação do Visual Studio “14” em 2014 ◦ A IDE posteriormente foi renomada para Visual Studio 2015, contando com diversas melhorias → lançamento em Julho/2015 da versão RTM ◦ C# 6.0 – nova versão da linguagem, também 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 utilização do NuGet
  • 6. O novo .NET Framework
  • 7. Alguns recursos da nova versão do Visual Studio
  • 8. Um novo tipo de atalho Símbolo de uma lâmpada (Light Bulb) – Quick Actions – Removendo using desnecessários (exemplo):
  • 9. Debug de expressões lambda O Visual Studio 2015 finalmente suporta esta funcionalidade:
  • 10. A nova versão do utilitário NuGet ◦ Interface nova inteiramente reformulada ◦ A interface também deixou de ser um formulário modal ◦ Possibilidade de seleção da versão de um package a partir de um combo ◦ Funcionalidade para consolidar as diferentes versões de um package dentro de uma mesma solução ◦ Resolução automática de conflitos envolvendo diferentes versões de uma mesma referência
  • 11. A nova versão do utilitário NuGet Nova interface:
  • 13. Using Static – O que é? ◦Declaração do tipo que será utilizado no início de um arquivo .cs (através de uma instrução “using static”) ◦Forma simples para invocação de métodos estáticos ◦Código mais enxuto
  • 14. Using Static – Exemplo
  • 15. Auto-Property Initializers – O que são? Especificação de valores default para propriedades em versões anteriores do C#: ◦ No construtor de uma classe (exceto propriedades somente leitura) ◦ Na declaração de atributos associados a propriedades
  • 16. Auto-Property Initializers – O que são? Exemplo em versões anteriores do C#:
  • 17. Auto-Property Initializers – O que são? ◦ Inicialização de propriedades (mesmo aquelas somente leitura) no próprio ponto em que são declaradas ◦ Dispensa o uso de atributos privados, como acontecia anteriormente
  • 19. Inicialização de propriedades somente leitura a partir de um construtor ◦Além do mecanismo Auto-Property Initializer, agora também é possível a atribuição de valores a propriedades read-only no construtor de uma classe ◦Este recurso pode ser útil no preenchimento de propriedades com base em parâmetros informados a um construtor
  • 20. Inicialização de propriedades somente leitura a partir de um construtor Exemplo em C# 6.0:
  • 21. Expression-bodied Members – O que são? Expressões lambda: ◦ Disponíveis desde o C# 3.0 ◦ Parte integrante da extensão LINQ (Language-Integrated Query) ◦ Um tipo de função anônima que busca simplificar e tornar mais enxuto o código
  • 22. Expression-bodied Members – O que são? ◦Implementação de elementos a partir de expressões lambda ◦Expression-bodied Property (para propriedades somente leitura) ◦Expression-bodied Function
  • 23. Expression-bodied Members – Propriedades Agora também:Antes:
  • 24. Expression-bodied Members – Métodos Agora também:Antes:
  • 25. Exception Filters – O que são? Diferentes checagens envolvendo um mesmo tipo de exceção forçavam ao uso de vários “ifs”, em versões anteriores do C#:
  • 26. Exception Filters – O que são? Exception Filters são um recurso do C# 6.0 que possibilita o uso de condições na própria cláusula catch (resultando em um código mais elegante):
  • 27. String Interpolation – O que é? Manipulação de strings desde as primeiras versões do .NET Framework: ◦ Simples concatenação (tende a tornar o código mais poluído no caso de sequências grandes de texto) ◦ Uso de placeholders (índices numéricos delimitados por chaves), em conjunto com métodos como Format da classe String ou ainda, Write e WriteLine na classe Console ◦ Embora os placeholders representem a melhor alternativa, a inclusão de novos parâmetros em strings já existentes é um processo suscetível a erros
  • 28. String Interpolation – O que é? Exemplo de uso de placeholders:
  • 29. String Interpolation – O que é? ◦ Possibilidade de utilizar diretamente expressões ao invés de placeholders numa string (o que não significa que seja necessário se valer de concatenação) ◦ As strings que fazem uso deste mecanismo devem ser iniciadas por “$” (dólar) ◦ As expressões devem estar delimitadas por chaves ◦ Dispensa o uso de métodos como o Format da classe String ◦ O próprio IntelliSense já suporta também este mecanismo
  • 31. Null-conditional operator – O que é? ◦ NullReferenceException ◦ Desatenção ◦ Serviço deixado “pela metade” ◦ Necessidade de checagens, validando se referências estão ou não preenchidas ◦ Muitas verificações ao longo de um sistema
  • 32. Null-conditional operator – O que é? Versões anteriores do C#:
  • 33. Null-conditional operator – O que é? ◦ Símbolo “?” acompanhando referências ◦ Variáveis ◦ Propriedades ◦ Atributos de classes ◦ Métodos que produzem algum retorno ◦ Substitui o uso de “ifs”
  • 35. Null-conditional operator – Delegates Utilizar o método Invoke:
  • 36. Chamadas assíncronas em blocos catch e finally C# 5.0 => novo modelo para processamento assíncrono ◦ Palavras-chave async e await ◦ Namespace System.Threading.Tasks, com classes como Task e Parallel ◦ Grande utilidade na implementação de aplicações visuais, sobretudo aquelas voltadas a dispositivos móveis Limitações ◦ Impossibilidade de chamadas assíncronas em blocos catch e finally
  • 37. Chamadas assíncronas em blocos catch e finally - Exemplo
  • 38. O operador nameof – O que é? ◦Permite a obtenção de nomes de variáveis e parâmetros (para possível utilização na gravação de registros de log) ◦Dispensa o uso de strings, as quais poderiam ficar com conteúdo inválido caso os elementos a que se referem fossem renomeados ◦Recurso disponível através da palavra-chave “nameof”
  • 39. O operador nameof – Exemplo
  • 40. Inicialização de instâncias do tipo Dictionary Antes do C# 6.0 a inicialização de instâncias baseadas no tipo Dictionary poderia ser feita de duas maneiras: ◦ Através do método Add, logo após a geração da instância ◦ Pares de chave-valor separados por “{” e “}”, durante a instanciação do objeto
  • 41. Inicialização de instâncias do tipo Dictionary ou
  • 42. Inicialização de instâncias do tipo Dictionary Com o C# 6.0 é possível uma terceira sintaxe, baseada no uso de colchetes:
  • 43. C# 6.0 Referências ◦ Guia de Sobrevivência: C# 6.0 http://social.technet.microsoft.com/wiki/pt-br/contents/articles/32498.guia-de-sobrevivencia-c-6-0.aspx ◦ New Language Features in C# 6 https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6