SlideShare uma empresa Scribd logo
1 de 46
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
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
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

Phpreact flisol-fb-2014
Phpreact flisol-fb-2014Phpreact flisol-fb-2014
Phpreact flisol-fb-2014
Adler Medrado
 

Mais procurados (20)

APIs do Jeito Certo
APIs do Jeito CertoAPIs do Jeito Certo
APIs do Jeito Certo
 
A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )
 
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
 
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...
 
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTIDelphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
 
Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
 
Phpreact flisol-fb-2014
Phpreact flisol-fb-2014Phpreact flisol-fb-2014
Phpreact flisol-fb-2014
 
Entendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHPEntendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHP
 
Composer dependency manager
Composer   dependency managerComposer   dependency manager
Composer dependency manager
 
PHP Orientado a Objetos
PHP Orientado a ObjetosPHP Orientado a Objetos
PHP Orientado a Objetos
 
Composer dependency manager - TDC - POA 2017
Composer   dependency manager - TDC - POA 2017Composer   dependency manager - TDC - POA 2017
Composer dependency manager - TDC - POA 2017
 
Delphi Parallel Programming Library
Delphi Parallel Programming LibraryDelphi Parallel Programming Library
Delphi Parallel Programming Library
 
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
 
Conhecendo o Zend Framework
Conhecendo o Zend FrameworkConhecendo o Zend Framework
Conhecendo o Zend Framework
 
Cya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.jsCya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.js
 
Construindo uma API, Client e Documentação usando Silex, Angular e Swagger
Construindo uma API, Client e Documentação usando Silex, Angular e SwaggerConstruindo uma API, Client e Documentação usando Silex, Angular e Swagger
Construindo uma API, Client e Documentação usando Silex, Angular e Swagger
 
Programando php com mais segurança
Programando php com mais segurançaProgramando php com mais segurança
Programando php com mais segurança
 
Python na Web
Python na WebPython na Web
Python na Web
 
Contribuindo e criando software livre
Contribuindo e criando software livreContribuindo e criando software livre
Contribuindo e criando software livre
 
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
 

Destaque

Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
alugpe
 
Presentacion
PresentacionPresentacion
Presentacion
cecadena
 
Portfólio PROINFO - Janete
Portfólio PROINFO - JanetePortfólio PROINFO - Janete
Portfólio PROINFO - Janete
JANETEQUEIROZ
 

Destaque (17)

E17 ll03
E17 ll03E17 ll03
E17 ll03
 
Artefato
ArtefatoArtefato
Artefato
 
Susie Almaneih: Me Time - How Executive Moms Carve Out Essential Alone Time
Susie Almaneih: Me Time - How Executive Moms Carve Out Essential Alone TimeSusie Almaneih: Me Time - How Executive Moms Carve Out Essential Alone Time
Susie Almaneih: Me Time - How Executive Moms Carve Out Essential Alone Time
 
Fire and Ice - SNOMED for CORE strength - John Fountain
Fire and Ice - SNOMED for CORE strength - John FountainFire and Ice - SNOMED for CORE strength - John Fountain
Fire and Ice - SNOMED for CORE strength - John Fountain
 
Atanagildo vale dos espiritas 4-4
Atanagildo   vale dos espiritas 4-4Atanagildo   vale dos espiritas 4-4
Atanagildo vale dos espiritas 4-4
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Computacion primer bimestre
Computacion primer bimestreComputacion primer bimestre
Computacion primer bimestre
 
Avances tecnológicos
Avances tecnológicosAvances tecnológicos
Avances tecnológicos
 
Presentacion
PresentacionPresentacion
Presentacion
 
Portfólio PROINFO - Janete
Portfólio PROINFO - JanetePortfólio PROINFO - Janete
Portfólio PROINFO - Janete
 
Felino, SRD, 6 anos
Felino, SRD, 6 anosFelino, SRD, 6 anos
Felino, SRD, 6 anos
 
A história dos massuia de monte aprazível, pietro carlo mazzuia terceira ed...
A história dos massuia de monte aprazível, pietro carlo mazzuia   terceira ed...A história dos massuia de monte aprazível, pietro carlo mazzuia   terceira ed...
A história dos massuia de monte aprazível, pietro carlo mazzuia terceira ed...
 
The Mobile Economy
The Mobile EconomyThe Mobile Economy
The Mobile Economy
 
Susie Almaneih | Making Happiness Happen: Our Kids Teach Us to Let Go of the ...
Susie Almaneih | Making Happiness Happen: Our Kids Teach Us to Let Go of the ...Susie Almaneih | Making Happiness Happen: Our Kids Teach Us to Let Go of the ...
Susie Almaneih | Making Happiness Happen: Our Kids Teach Us to Let Go of the ...
 
Susie Almaneih: 6 Things That Kids Can Do To Volunteer As an after school act...
Susie Almaneih: 6 Things That Kids Can Do To Volunteer As an after school act...Susie Almaneih: 6 Things That Kids Can Do To Volunteer As an after school act...
Susie Almaneih: 6 Things That Kids Can Do To Volunteer As an after school act...
 
M.Leon, establishing the new standard_definitve treatment for bifurcation les...
M.Leon, establishing the new standard_definitve treatment for bifurcation les...M.Leon, establishing the new standard_definitve treatment for bifurcation les...
M.Leon, establishing the new standard_definitve treatment for bifurcation les...
 
TINGKAT KESTABILAN ANTARA UTS DAN UAS SERTA PENGARUH NILAI UTS TERHADAP RAPOT...
TINGKAT KESTABILAN ANTARA UTS DAN UAS SERTA PENGARUH NILAI UTS TERHADAP RAPOT...TINGKAT KESTABILAN ANTARA UTS DAN UAS SERTA PENGARUH NILAI UTS TERHADAP RAPOT...
TINGKAT KESTABILAN ANTARA UTS DAN UAS SERTA PENGARUH NILAI UTS TERHADAP RAPOT...
 

Semelhante a C# 6.0 - Interopmix 2015

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
Ricardo Guerra Freitas
 

Semelhante a C# 6.0 - Interopmix 2015 (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
 
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...
 
Csharp
CsharpCsharp
Csharp
 
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
 
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...
 
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...
 
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 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
 
Aop Aspect J 1.5.4
Aop Aspect J 1.5.4Aop Aspect J 1.5.4
Aop Aspect J 1.5.4
 
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
 
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
 
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 - ASP.NET Core Day - Maio/2017
ASP.NET Core e Linux - ASP.NET Core Day - Maio/2017ASP.NET Core e Linux - ASP.NET Core Day - Maio/2017
ASP.NET Core e Linux - ASP.NET Core Day - Maio/2017
 
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
 
Construindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOpsConstruindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOps
 
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
 
Aula1
Aula1Aula1
Aula1
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Robot Framework - principais características
Robot Framework - principais característicasRobot Framework - principais características
Robot Framework - principais características
 

Mais de Renato 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 - Interopmix 2015

  • 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. 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
  • 16. 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
  • 17. Auto-Property Initializers – O que são? Exemplo em versões anteriores do C#:
  • 18. 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
  • 20. 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
  • 21. Inicialização de propriedades somente leitura a partir de um construtor Exemplo em C# 6.0:
  • 22. 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
  • 23. 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
  • 24. Expression-bodied Members – Propriedades Agora também:Antes:
  • 25. Expression-bodied Members – Métodos Agora também:Antes:
  • 26. 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#:
  • 27. 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):
  • 28. 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
  • 29. String Interpolation – O que é? Exemplo de uso de placeholders:
  • 30. 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
  • 32. 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
  • 33. Null-conditional operator – O que é? Versões anteriores do C#:
  • 34. 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”
  • 36. Null-conditional operator – Delegates Utilizar o método Invoke:
  • 37. 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
  • 38. Chamadas assíncronas em blocos catch e finally - Exemplo
  • 39. 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”
  • 40. O operador nameof – Exemplo
  • 41. 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
  • 42. Inicialização de instâncias do tipo Dictionary ou
  • 43. Inicialização de instâncias do tipo Dictionary Com o C# 6.0 é possível uma terceira sintaxe, baseada no uso de colchetes:
  • 44. 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