SlideShare a Scribd company logo
1 of 74
Renato Groffe
Agosto/2015
 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
 Técnico em Processamento de Dados
 MTAC (Microsoft Technical Audience Contributor), MCP,
Microsoft Specialist, MCTS, OCA, ITIL, COBIT
 Página no Facebook
https://www.facebook.com/RenatoGroffeSW
 Perfil no Facebook
https://www.facebook.com/renatogroff
 LinkedIn
http://br.linkedin.com/in/renatogroffe
 Microsoft Visual Studio Community 2015
https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx
 Visual Studio 2015 e C# 6.0
 Alguns recursos da nova versão do Visual Studio
 Using Static
 O operador nameof
 Auto-Property Initializers
 Inicialização de propriedades somente leitura a partir de um
construtor
 Expression-bodied Members
 Inicialização de instâncias do tipo Dictionary
 Exception Filters
 Implementação de construtores sem parâmetros em structs
 String Interpolation
 Chamadas assíncronas em blocos catch e finally
 Null-conditional operator
 Null-conditional operator e delegates
 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
 Plataforma Web totalmente reformulada => ASP.NET 5 e MVC 6
◦ O namespace System.Web deixou de existir
◦ Forte ênfase em cloud computing, JSON e utilização do NuGet
 Símbolo de uma lâmpada (Light Bulb) – Quick Actions – Removendo
using desnecessários (exemplo):
 Até o Visual Studio 2013 (ERRO):
 O Visual Studio 2015 finalmente suporta esta funcionalidade:
 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
 Nova interface:
 Selecionando a versão de um package:
 O uso de métodos estáticos é extremamente comum em C#:
◦ Conversão de valores (Classe System.Convert, por exemplo)
◦ Cálculos aritméticos (classe System.Math, por exemplo)
 Em versões anteriores do C#:
 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
 O Visual Studio 2015 já oferece suporte através do IntelliSense:
 O recurso Using Static no C# 6.0:
 Resultado dos testes:
 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 no C# 6.0:
 Resultado dos testes:
 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
 Exemplo em versões anteriores do C#:
 O que é? :
◦ 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
 Exemplo de inicialização em C# 6.0:
 Testando a inicialização de propriedades:
 Resultado dos testes:
 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
 Versões anteriores da linguagem C#:
 Exemplo em C# 6.0:
 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
◦ Implementação de elementos a partir de expressões lambda
◦ Expression-bodied Property (para propriedades somente leitura)
◦ Expression-bodied Function
 Exemplo de declaração de uma propriedade somente leitura:
 Utilizando uma Expression-bodied Property:
 Testando o uso de uma Expression-bodied Property:
 Resultado do teste (Expression-bodied Property):
 Exemplo de declaração de um método simples:
 Utilizando uma Expression-bodied Function:
 Testando o uso de uma Expression-bodied Function:
 Resultado do teste (Expression-bodied Function):
 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
 Utilizando o método Add:
 Inicializando no momento da instanciação:
 Com o C# 6.0 é possível uma terceira sintaxe, baseada no uso de
colchetes e que guarda semelhanças com o padrão JSON:
 Resultado da execução da aplicação de testes:
 Diferentes checagens envolvendo um mesmo tipo de exceção
forçavam ao uso de vários “ifs”, em versões anteriores do C#:
 Implementação da classe TesteException:
 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):
 Resultado da execução da aplicação de testes:
 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
 Um primeiro exemplo de uso de placeholders:
 Alterando o exemplo anterior (inclusão de um novo placeholder e
alterações no índice dos demais):
 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
 Exemplo de uso deste recurso em C# 6.0:
 O IntelliSense já suporta também este mecanismo:
 Além de variáveis, propriedades e chamadas a métodos, expressões
baseadas no operador “?” também podem ser empregadas:
 Resultado da execução do exemplo apresentado:
 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
 Visual Studio 2013 (ERRO):
 C# 6.0:
 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
 Versões anteriores do C#:
 O que é?
◦ Símbolo “?” acompanhando referências
 Variáveis
 Propriedades
 Atributos de classes
 Métodos que produzem algum retorno
◦ Substitui o uso de “ifs”
 C# 6.0 (código mais enxuto e de rápida leitura):
 C# 6.0 – resultado do bloco de testes:
 Delegates
◦ Implementação de eventos na plataforma .NET
◦ Uso de tipos derivados da classe EventArgs
(namespace System)
◦ Palavras-chave “delegate” (declaração) e “event”
(evento baseado em um delegate)
 Exemplo de implementação de delegate:
 Exemplo de classe na qual é utilizado um evento:
 Utilizando o operador “?” => ERRO
 Solução => utilizar o método Invoke:
 Testando o uso do operador “?” com delegates:
 Resultado do teste:
Dúvidas, sugestões???
 C# 6.0 – Novos Recursos – Parte 1
http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-1/
 C# 6.0 – Novos Recursos – Parte 2
http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-2/
 C# 6.0 – Novos Recursos – Parte 3
http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-3/
 C# 6.0 – Novos Recursos – Parte 4
http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-4/
 C# 6.0 – Novos Recursos – Parte 5
http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-5/
 Fontes dos exemplos abordados nesta apresentação
https://gallery.technet.microsoft.com/C-60-Novos-Recursos-d22a7d9d
Obrigado!!!

More Related Content

What's hot

C# 6.0 .net coders
C# 6.0   .net codersC# 6.0   .net coders
C# 6.0 .net codersRenato Groff
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2PeslPinguim
 
Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Andre Nascimento
 
Poo1 aula 3 - java - comentários instruções e blocos-palavras chave
Poo1   aula 3 - java - comentários instruções e blocos-palavras chavePoo1   aula 3 - java - comentários instruções e blocos-palavras chave
Poo1 aula 3 - java - comentários instruções e blocos-palavras chaveDenis Sobrenome
 
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
 
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...Rogério Moraes de Carvalho
 
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
 
Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)Armando Daniel
 
Classes csharp
Classes csharpClasses csharp
Classes csharpTiago
 
Poo1 aula 2 - java - apresentação do netbeans e 1º programa
Poo1   aula 2 - java - apresentação do netbeans e 1º programaPoo1   aula 2 - java - apresentação do netbeans e 1º programa
Poo1 aula 2 - java - apresentação do netbeans e 1º programaDenis Sobrenome
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Natanael Fonseca
 
C# 6.0 - DotNetBaixada - Novembro/2015
C# 6.0 - DotNetBaixada - Novembro/2015C# 6.0 - DotNetBaixada - Novembro/2015
C# 6.0 - DotNetBaixada - Novembro/2015Renato Groff
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroVisual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroRogério Moraes de Carvalho
 
Apostila De Visualg
Apostila De VisualgApostila De Visualg
Apostila De Visualgecompo
 
Criando uma aplicação com delphi
Criando uma aplicação com delphiCriando uma aplicação com delphi
Criando uma aplicação com delphiMundo Orbe
 
03 - Introdução a lógica de programação parte 3 - v1.1
03 - Introdução a lógica de programação parte 3 - v1.103 - Introdução a lógica de programação parte 3 - v1.1
03 - Introdução a lógica de programação parte 3 - v1.1César Augusto Pessôa
 

What's hot (20)

C# 6.0 .net coders
C# 6.0   .net codersC# 6.0   .net coders
C# 6.0 .net coders
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2
 
Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#
 
Poo1 aula 3 - java - comentários instruções e blocos-palavras chave
Poo1   aula 3 - java - comentários instruções e blocos-palavras chavePoo1   aula 3 - java - comentários instruções e blocos-palavras chave
Poo1 aula 3 - java - comentários instruções e blocos-palavras chave
 
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
 
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
 
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...
 
Aula2
Aula2Aula2
Aula2
 
Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)
 
Classes csharp
Classes csharpClasses csharp
Classes csharp
 
Poo1 aula 2 - java - apresentação do netbeans e 1º programa
Poo1   aula 2 - java - apresentação do netbeans e 1º programaPoo1   aula 2 - java - apresentação do netbeans e 1º programa
Poo1 aula 2 - java - apresentação do netbeans e 1º programa
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Java3
Java3Java3
Java3
 
C# 6.0 - DotNetBaixada - Novembro/2015
C# 6.0 - DotNetBaixada - Novembro/2015C# 6.0 - DotNetBaixada - Novembro/2015
C# 6.0 - DotNetBaixada - Novembro/2015
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroVisual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
 
Apostila De Visualg
Apostila De VisualgApostila De Visualg
Apostila De Visualg
 
Criando uma aplicação com delphi
Criando uma aplicação com delphiCriando uma aplicação com delphi
Criando uma aplicação com delphi
 
03 - Introdução a lógica de programação parte 3 - v1.1
03 - Introdução a lógica de programação parte 3 - v1.103 - Introdução a lógica de programação parte 3 - v1.1
03 - Introdução a lógica de programação parte 3 - v1.1
 
.NET e C# - Introdução Geral
.NET e C# - Introdução Geral.NET e C# - Introdução Geral
.NET e C# - Introdução Geral
 

Viewers also liked

Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...rafaelov
 
Programação c# - banco de dados
Programação   c# - banco de dadosProgramação   c# - banco de dados
Programação c# - banco de dadosdouglasschaefler
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Marcos Castro
 
Programação Paralela - Threads
Programação Paralela - ThreadsProgramação Paralela - Threads
Programação Paralela - ThreadsGlaucio Scheibel
 
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Rogério Moraes de Carvalho
 
Sistemas Operacionais Processos e Threads - Wellington Pinto de Oliveira
Sistemas Operacionais Processos e Threads - Wellington Pinto de OliveiraSistemas Operacionais Processos e Threads - Wellington Pinto de Oliveira
Sistemas Operacionais Processos e Threads - Wellington Pinto de OliveiraWellington Oliveira
 
Gerências de Processos: Threads
Gerências de Processos: ThreadsGerências de Processos: Threads
Gerências de Processos: ThreadsAlexandre Duarte
 
Estruturas de Dados em C#
Estruturas de Dados em C#Estruturas de Dados em C#
Estruturas de Dados em C#Marcelo Charan
 
Sistemas de equações
 Sistemas de equações Sistemas de equações
Sistemas de equaçõesmarilia65
 
Direitos e garantias fundamentais (parte 1)
Direitos e garantias fundamentais (parte 1)Direitos e garantias fundamentais (parte 1)
Direitos e garantias fundamentais (parte 1)Nilberte
 
9º ano - Segunda guerra mundial
9º ano - Segunda guerra mundial9º ano - Segunda guerra mundial
9º ano - Segunda guerra mundialJanaína Bindá
 
Teste 1º período 2014-2015- 3º ano
Teste 1º período  2014-2015- 3º anoTeste 1º período  2014-2015- 3º ano
Teste 1º período 2014-2015- 3º anoGraça Alexandre
 

Viewers also liked (20)

Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
 
Exercicios de C#
Exercicios de C#Exercicios de C#
Exercicios de C#
 
Introducao ao C#
Introducao ao C#Introducao ao C#
Introducao ao C#
 
Programação c# - banco de dados
Programação   c# - banco de dadosProgramação   c# - banco de dados
Programação c# - banco de dados
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)
 
SFD - C# para a comunidade
SFD - C# para a comunidadeSFD - C# para a comunidade
SFD - C# para a comunidade
 
Programação Paralela - Threads
Programação Paralela - ThreadsProgramação Paralela - Threads
Programação Paralela - Threads
 
Csharp.intro
Csharp.introCsharp.intro
Csharp.intro
 
Introdução C#
Introdução C#Introdução C#
Introdução C#
 
Apostila de C# & Asp.Net
Apostila de C# & Asp.NetApostila de C# & Asp.Net
Apostila de C# & Asp.Net
 
Processos e threads cap 02 (i unidade)
Processos e threads   cap 02 (i unidade)Processos e threads   cap 02 (i unidade)
Processos e threads cap 02 (i unidade)
 
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
 
Sistemas Operacionais Processos e Threads - Wellington Pinto de Oliveira
Sistemas Operacionais Processos e Threads - Wellington Pinto de OliveiraSistemas Operacionais Processos e Threads - Wellington Pinto de Oliveira
Sistemas Operacionais Processos e Threads - Wellington Pinto de Oliveira
 
Gerências de Processos: Threads
Gerências de Processos: ThreadsGerências de Processos: Threads
Gerências de Processos: Threads
 
Estruturas de Dados em C#
Estruturas de Dados em C#Estruturas de Dados em C#
Estruturas de Dados em C#
 
Sistemas de equações
 Sistemas de equações Sistemas de equações
Sistemas de equações
 
Estado Islâmico
Estado IslâmicoEstado Islâmico
Estado Islâmico
 
Direitos e garantias fundamentais (parte 1)
Direitos e garantias fundamentais (parte 1)Direitos e garantias fundamentais (parte 1)
Direitos e garantias fundamentais (parte 1)
 
9º ano - Segunda guerra mundial
9º ano - Segunda guerra mundial9º ano - Segunda guerra mundial
9º ano - Segunda guerra mundial
 
Teste 1º período 2014-2015- 3º ano
Teste 1º período  2014-2015- 3º anoTeste 1º período  2014-2015- 3º ano
Teste 1º período 2014-2015- 3º ano
 

Similar to Visual Studio 2015 e C# 6.0 recursos

C# 6.0 - Interopmix 2015
C# 6.0 - Interopmix 2015C# 6.0 - Interopmix 2015
C# 6.0 - Interopmix 2015Renato 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
 
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
 
Robot Framework - principais características
Robot Framework - principais característicasRobot Framework - principais características
Robot Framework - principais característicasalinebiath
 
BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015Renato Groff
 
Treinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCTreinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCMichael Costa
 
BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)Renato Groff
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Strutseduan
 
Test-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netTest-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netRenato Groff
 
Mocking Test - Outubro/2015
Mocking Test - Outubro/2015Mocking Test - Outubro/2015
Mocking Test - Outubro/2015Renato Groff
 
Criando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssuredCriando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssuredElias Nogueira
 
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
 
Android DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoAndroid DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoiMasters
 
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
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverEduardo Jorge
 
Tipos de automação de teste
Tipos de automação de testeTipos de automação de teste
Tipos de automação de testeMarcos Pessoa
 

Similar to Visual Studio 2015 e C# 6.0 recursos (20)

C# 6.0 - Interopmix 2015
C# 6.0 - Interopmix 2015C# 6.0 - Interopmix 2015
C# 6.0 - Interopmix 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)
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)
 
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
 
Robot Framework - principais características
Robot Framework - principais característicasRobot Framework - principais características
Robot Framework - principais características
 
Aop Aspect J 1.5.4
Aop Aspect J 1.5.4Aop Aspect J 1.5.4
Aop Aspect J 1.5.4
 
BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015
 
Treinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCTreinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVC
 
BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Struts
 
Aula1
Aula1Aula1
Aula1
 
Test-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netTest-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.net
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Mocking Test - Outubro/2015
Mocking Test - Outubro/2015Mocking Test - Outubro/2015
Mocking Test - Outubro/2015
 
Criando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssuredCriando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssured
 
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
 
Android DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoAndroid DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimento
 
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
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserver
 
Tipos de automação de teste
Tipos de automação de testeTipos de automação de teste
Tipos de automação de teste
 
Apostila de-vb-net
Apostila de-vb-netApostila de-vb-net
Apostila de-vb-net
 

More from 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
 

More from 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
 

Visual Studio 2015 e C# 6.0 recursos

  • 2.  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  Técnico em Processamento de Dados  MTAC (Microsoft Technical Audience Contributor), MCP, Microsoft Specialist, MCTS, OCA, ITIL, COBIT
  • 3.  Página no Facebook https://www.facebook.com/RenatoGroffeSW  Perfil no Facebook https://www.facebook.com/renatogroff  LinkedIn http://br.linkedin.com/in/renatogroffe
  • 4.  Microsoft Visual Studio Community 2015 https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx
  • 5.  Visual Studio 2015 e C# 6.0  Alguns recursos da nova versão do Visual Studio  Using Static  O operador nameof  Auto-Property Initializers  Inicialização de propriedades somente leitura a partir de um construtor  Expression-bodied Members  Inicialização de instâncias do tipo Dictionary  Exception Filters  Implementação de construtores sem parâmetros em structs  String Interpolation  Chamadas assíncronas em blocos catch e finally  Null-conditional operator  Null-conditional operator e delegates
  • 6.  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  Plataforma Web totalmente reformulada => ASP.NET 5 e MVC 6 ◦ O namespace System.Web deixou de existir ◦ Forte ênfase em cloud computing, JSON e utilização do NuGet
  • 7.  Símbolo de uma lâmpada (Light Bulb) – Quick Actions – Removendo using desnecessários (exemplo):
  • 8.  Até o Visual Studio 2013 (ERRO):
  • 9.  O Visual Studio 2015 finalmente suporta esta funcionalidade:
  • 10.  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
  • 12.  Selecionando a versão de um package:
  • 13.  O uso de métodos estáticos é extremamente comum em C#: ◦ Conversão de valores (Classe System.Convert, por exemplo) ◦ Cálculos aritméticos (classe System.Math, por exemplo)
  • 14.  Em versões anteriores do C#:
  • 15.  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.  O Visual Studio 2015 já oferece suporte através do IntelliSense:
  • 17.  O recurso Using Static no C# 6.0:
  • 18.  Resultado dos testes:
  • 19.  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”
  • 20.  O operador nameof no C# 6.0:
  • 21.  Resultado dos testes:
  • 22.  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
  • 23.  Exemplo em versões anteriores do C#:
  • 24.  O que é? : ◦ 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
  • 25.  Exemplo de inicialização em C# 6.0:
  • 26.  Testando a inicialização de propriedades:
  • 27.  Resultado dos testes:
  • 28.  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
  • 29.  Versões anteriores da linguagem C#:
  • 30.  Exemplo em C# 6.0:
  • 31.  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 ◦ Implementação de elementos a partir de expressões lambda ◦ Expression-bodied Property (para propriedades somente leitura) ◦ Expression-bodied Function
  • 32.  Exemplo de declaração de uma propriedade somente leitura:
  • 33.  Utilizando uma Expression-bodied Property:
  • 34.  Testando o uso de uma Expression-bodied Property:
  • 35.  Resultado do teste (Expression-bodied Property):
  • 36.  Exemplo de declaração de um método simples:
  • 37.  Utilizando uma Expression-bodied Function:
  • 38.  Testando o uso de uma Expression-bodied Function:
  • 39.  Resultado do teste (Expression-bodied Function):
  • 40.  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.  Utilizando o método Add:
  • 42.  Inicializando no momento da instanciação:
  • 43.  Com o C# 6.0 é possível uma terceira sintaxe, baseada no uso de colchetes e que guarda semelhanças com o padrão JSON:
  • 44.  Resultado da execução da aplicação de testes:
  • 45.  Diferentes checagens envolvendo um mesmo tipo de exceção forçavam ao uso de vários “ifs”, em versões anteriores do C#:
  • 46.  Implementação da classe TesteException:
  • 47.  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):
  • 48.  Resultado da execução da aplicação de testes:
  • 49.  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
  • 50.  Um primeiro exemplo de uso de placeholders:
  • 51.  Alterando o exemplo anterior (inclusão de um novo placeholder e alterações no índice dos demais):
  • 52.  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
  • 53.  Exemplo de uso deste recurso em C# 6.0:
  • 54.  O IntelliSense já suporta também este mecanismo:
  • 55.  Além de variáveis, propriedades e chamadas a métodos, expressões baseadas no operador “?” também podem ser empregadas:
  • 56.  Resultado da execução do exemplo apresentado:
  • 57.  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
  • 58.  Visual Studio 2013 (ERRO):
  • 60.  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
  • 62.  O que é? ◦ Símbolo “?” acompanhando referências  Variáveis  Propriedades  Atributos de classes  Métodos que produzem algum retorno ◦ Substitui o uso de “ifs”
  • 63.  C# 6.0 (código mais enxuto e de rápida leitura):
  • 64.  C# 6.0 – resultado do bloco de testes:
  • 65.  Delegates ◦ Implementação de eventos na plataforma .NET ◦ Uso de tipos derivados da classe EventArgs (namespace System) ◦ Palavras-chave “delegate” (declaração) e “event” (evento baseado em um delegate)
  • 66.  Exemplo de implementação de delegate:
  • 67.  Exemplo de classe na qual é utilizado um evento:
  • 68.  Utilizando o operador “?” => ERRO
  • 69.  Solução => utilizar o método Invoke:
  • 70.  Testando o uso do operador “?” com delegates:
  • 73.  C# 6.0 – Novos Recursos – Parte 1 http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-1/  C# 6.0 – Novos Recursos – Parte 2 http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-2/  C# 6.0 – Novos Recursos – Parte 3 http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-3/  C# 6.0 – Novos Recursos – Parte 4 http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-4/  C# 6.0 – Novos Recursos – Parte 5 http://netcoders.com.br/blog/csharp-6-novos-recursos-parte-5/  Fontes dos exemplos abordados nesta apresentação https://gallery.technet.microsoft.com/C-60-Novos-Recursos-d22a7d9d