SlideShare uma empresa Scribd logo
Renato Groffe
Fevereiro/2015
 Mais de 15 anos de experiência na área de Tecnologia
 Pós-graduação em Engenharia de Software – ênfase em
SOA
 Cursando MBA em Business Intelligence (FIAP)
 Graduação em Sistemas de Informação
 Técnico em Processamento de Dados
 MCP, Microsoft Specialist, MCTS, OCA, ITIL, COBIT
 Máquina virtual Windows 8.1 (pode ser criada
a partir do Virtual Box, que é gratuito)
 https://www.virtualbox.org/
 Visual Studio 2015 CTP 5 instalado na
máquina virtual
http://www.visualstudio.com/en-us/news/vs2015-vs.aspx
 Visual Studio 2015 e C# 6.0
 Using Static
 O operador nameof
 Um novo tipo de atalho no VS 2015
 Auto-Property Initializers
 Inicialização de propriedades somente leitura a partir de um construtor
 Expression-bodied Members
 Debug de expressões lambda
 Inicialização de instâncias do tipo Dictionary
 Exception Filters
 A nova versão do utilitário NuGet
 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
 C# 6.0 – nova versão da linguagem, também com melhorias visando
simplificar o desenvolvimento
 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
 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:
 Símbolo de uma lâmpada (Light Bulb) – Quick Actions – Removendo
using desnecessários (exemplo):
 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):
 Até o Visual Studio 2013 (ERRO):
 O Visual Studio 2015 finalmente suporta esta funcionalidade:
 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:
 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:
 Structs -> empregados na representação de informações simples
como tempo, coordenadas geométricas ou dados geográficos
 A classe System.DateTime representa um bom exemplo deste tipo
de estrutura
 Utilização de construtores para estas estruturas:
◦ Nenhum construtor (é assumido um construtor default sem parâmetros)
◦ Construtores com parâmetros (os quais são empregados na inicialização das
instâncias)
 Struct sem construtor
 Struct com construtor (obrigatório o uso de parâmetros antes do C# 6.0):
 Struct com construtor sem parâmetros no C# 6.0:
 Um segundo exemplo de struct em C# 6.0:
 Testando o struct apresentado:
 Resultado dos 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/
 Languages features in C# 6 and VB 14
https://roslyn.codeplex.com/wikipage?title=Language%20Feature%20Sta
tus&referringTitle=Documentation
 Página no Facebook
https://www.facebook.com/RenatoGroffeSW
 Perfil no Facebook
https://www.facebook.com/renatogroff
 LinkedIn
http://br.linkedin.com/in/renatogroffe
Obrigado!!!

Mais conteúdo relacionado

Mais procurados (19)

PPTX
Introdução C#
Luis Fernando Marques
 
PPTX
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Renato Groff
 
PDF
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
Júnior Porfirio
 
PDF
Zend Framework Estrutura e TDD
PHP Day Curitiba
 
PDF
TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...
Rogério Moraes de Carvalho
 
PPTX
Curso de C# - Introdução
Daniel Araújo
 
PDF
Apostila - Desenvolvimento Web com ASP.NET
José Corrêa Viana
 
PPTX
Programando php com excelência
Marcus Vinicius Leandro
 
PPTX
Bdd com spec flow
Cintia Armesto
 
PPT
ASP.NET MVC para desenvolvedores Web Forms (TechEd)
Giovanni Bassi
 
PDF
Linguagem c
saido_embalo1980
 
PDF
Desenvolvendo uma App multiplataforma compartilhando 90% do código
Guilherme Heynemann Bruzzi
 
PPTX
[CLPE] Visual Studio 2010
Felipe Pimentel
 
PPTX
Introdução ao desenvolvimento front end usando bootstrap e angular js
Cloves Moreira Junior
 
PDF
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Allyson Barros
 
PPTX
Assespro pr-workshop-robot framework
Mayara Fernandes
 
PPTX
Palestra: LINQ via C#
Thiago Vidal
 
PPTX
Sobre TDD - Tech Friday da Everis Uberlândia
Rogerio Fontes
 
Introdução C#
Luis Fernando Marques
 
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Renato Groff
 
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
Júnior Porfirio
 
Zend Framework Estrutura e TDD
PHP Day Curitiba
 
TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...
Rogério Moraes de Carvalho
 
Curso de C# - Introdução
Daniel Araújo
 
Apostila - Desenvolvimento Web com ASP.NET
José Corrêa Viana
 
Programando php com excelência
Marcus Vinicius Leandro
 
Bdd com spec flow
Cintia Armesto
 
ASP.NET MVC para desenvolvedores Web Forms (TechEd)
Giovanni Bassi
 
Linguagem c
saido_embalo1980
 
Desenvolvendo uma App multiplataforma compartilhando 90% do código
Guilherme Heynemann Bruzzi
 
[CLPE] Visual Studio 2010
Felipe Pimentel
 
Introdução ao desenvolvimento front end usando bootstrap e angular js
Cloves Moreira Junior
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Allyson Barros
 
Assespro pr-workshop-robot framework
Mayara Fernandes
 
Palestra: LINQ via C#
Thiago Vidal
 
Sobre TDD - Tech Friday da Everis Uberlândia
Rogerio Fontes
 

Destaque (20)

PDF
Visão geral da segurança em Java EE
Helder da Rocha
 
PPTX
Construindo Apps Com SignalR
Ivan Paulovich
 
PDF
Asp julio battisti - criando sites dinamicos com asp 3.0
leojr_0
 
PDF
C sharp feup10set2001
leojr_0
 
PDF
Fundamentos do asp.net
leojr_0
 
PDF
Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)
Helder da Rocha
 
PDF
Curso de xml
Regisnaldo Alencar
 
PPTX
Interop itcare: Interoperabilidade Java e .NET
Alessandro Binhara
 
PPTX
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
Fábio Delboni
 
PPT
Minicurso Testes em .NET - Globalcode Vinicius Quaiato
Vinicius Quaiato
 
PPTX
TOTVS LINHA RM - FÓRMULAS - Lógica de construção de fórmulas
Fábio Delboni
 
PPTX
TOTVS LINHA RM TREINAMENTO SQL
Fábio Delboni
 
PDF
105 apostila asp net, c# e visual basic.net
Fernando Helen
 
PDF
Programação c# - banco de dados
douglasschaefler
 
PDF
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Daniel Makiyama
 
PDF
Apostila de C# & Asp.Net
Andre Nascimento
 
PDF
Tutorial EJB 3.0 (2009)
Helder da Rocha
 
PDF
Curso asp - intermediario
Regisnaldo Alencar
 
PDF
Introdução ao Arduino
Helder da Rocha
 
PDF
Curso desenvolvendo web sites (asp)
Feliz Bunguele
 
Visão geral da segurança em Java EE
Helder da Rocha
 
Construindo Apps Com SignalR
Ivan Paulovich
 
Asp julio battisti - criando sites dinamicos com asp 3.0
leojr_0
 
C sharp feup10set2001
leojr_0
 
Fundamentos do asp.net
leojr_0
 
Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)
Helder da Rocha
 
Curso de xml
Regisnaldo Alencar
 
Interop itcare: Interoperabilidade Java e .NET
Alessandro Binhara
 
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
Fábio Delboni
 
Minicurso Testes em .NET - Globalcode Vinicius Quaiato
Vinicius Quaiato
 
TOTVS LINHA RM - FÓRMULAS - Lógica de construção de fórmulas
Fábio Delboni
 
TOTVS LINHA RM TREINAMENTO SQL
Fábio Delboni
 
105 apostila asp net, c# e visual basic.net
Fernando Helen
 
Programação c# - banco de dados
douglasschaefler
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Daniel Makiyama
 
Apostila de C# & Asp.Net
Andre Nascimento
 
Tutorial EJB 3.0 (2009)
Helder da Rocha
 
Curso asp - intermediario
Regisnaldo Alencar
 
Introdução ao Arduino
Helder da Rocha
 
Curso desenvolvendo web sites (asp)
Feliz Bunguele
 
Anúncio

Semelhante a C# 6.0 .net coders (20)

PPTX
C# 6.0 - Interopmix 2015
Renato Groff
 
PPTX
C# 6.0 - DotNetBaixada - Novembro/2015
Renato Groff
 
PDF
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Rogério Moraes de Carvalho
 
PPTX
Introdução a C# 4.0 (Revisão)
Waldyr Felix
 
PPTX
Revisão de C# 4.0
Mário Meyrelles
 
PPTX
dotNet framework foundation
Gabriel Guilherme
 
PPTX
Introdução ao C#
Alex Pinheiro Das Graças
 
PDF
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Rogério Moraes de Carvalho
 
PPTX
C# 6
CDS
 
PPTX
Aprendendo C# do zero
Manawydan
 
PDF
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
Rogério Moraes de Carvalho
 
PPTX
3- POO
Frank Coelho
 
PPTX
Poo
Frank Coelho
 
PPTX
Introdução a linguagem C# (CSharp)
Marcos Castro
 
PPTX
S2 b desenvolvimento de sistemas [reparado]
Milena Rebouças
 
PPTX
Programação C - Aula 1
Filipo Mór
 
PPTX
.NET Core e C# 7.0 - InterCon 2016
Renato Groff
 
DOCX
Resumo c#
Wesley Germano Otávio
 
PDF
Script c
Raphael
 
PDF
Aula 1 -_ambiente_visual_studio_2012
Laís Vidal
 
C# 6.0 - Interopmix 2015
Renato Groff
 
C# 6.0 - DotNetBaixada - Novembro/2015
Renato Groff
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Rogério Moraes de Carvalho
 
Introdução a C# 4.0 (Revisão)
Waldyr Felix
 
Revisão de C# 4.0
Mário Meyrelles
 
dotNet framework foundation
Gabriel Guilherme
 
Introdução ao C#
Alex Pinheiro Das Graças
 
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Rogério Moraes de Carvalho
 
C# 6
CDS
 
Aprendendo C# do zero
Manawydan
 
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
Rogério Moraes de Carvalho
 
3- POO
Frank Coelho
 
Introdução a linguagem C# (CSharp)
Marcos Castro
 
S2 b desenvolvimento de sistemas [reparado]
Milena Rebouças
 
Programação C - Aula 1
Filipo Mór
 
.NET Core e C# 7.0 - InterCon 2016
Renato Groff
 
Script c
Raphael
 
Aula 1 -_ambiente_visual_studio_2012
Laís Vidal
 
Anúncio

Mais de Renato Groff (20)

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

Último (6)

PDF
Zeebo: Uma brevíssima introdução. - David Glotz
BluePanther6
 
PDF
11 Roberto.pdf astronomia e astronautica
henzoa798
 
PDF
Ceritificado Imersão SOC HackOne Sab/Dom.pdf
RodrigoMori7
 
PDF
Aulas Extras - O que é e por que Aprender e Utilizar.pdf
fmartinsss
 
PDF
IA - Grupo J.pdf para trabalho de inteligencia artificial
juanaraujo139815
 
PPTX
Windows 11 Apostila do Básico ao Avançado
deividcosimo1
 
Zeebo: Uma brevíssima introdução. - David Glotz
BluePanther6
 
11 Roberto.pdf astronomia e astronautica
henzoa798
 
Ceritificado Imersão SOC HackOne Sab/Dom.pdf
RodrigoMori7
 
Aulas Extras - O que é e por que Aprender e Utilizar.pdf
fmartinsss
 
IA - Grupo J.pdf para trabalho de inteligencia artificial
juanaraujo139815
 
Windows 11 Apostila do Básico ao Avançado
deividcosimo1
 

C# 6.0 .net coders

  • 2.  Mais de 15 anos de experiência na área de Tecnologia  Pós-graduação em Engenharia de Software – ênfase em SOA  Cursando MBA em Business Intelligence (FIAP)  Graduação em Sistemas de Informação  Técnico em Processamento de Dados  MCP, Microsoft Specialist, MCTS, OCA, ITIL, COBIT
  • 3.  Máquina virtual Windows 8.1 (pode ser criada a partir do Virtual Box, que é gratuito)  https://www.virtualbox.org/  Visual Studio 2015 CTP 5 instalado na máquina virtual http://www.visualstudio.com/en-us/news/vs2015-vs.aspx
  • 4.  Visual Studio 2015 e C# 6.0  Using Static  O operador nameof  Um novo tipo de atalho no VS 2015  Auto-Property Initializers  Inicialização de propriedades somente leitura a partir de um construtor  Expression-bodied Members  Debug de expressões lambda  Inicialização de instâncias do tipo Dictionary  Exception Filters  A nova versão do utilitário NuGet  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
  • 5.  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  C# 6.0 – nova versão da linguagem, também com melhorias visando simplificar o desenvolvimento  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
  • 6.  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)
  • 7.  Em versões anteriores do C#:
  • 8.  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
  • 9.  O Visual Studio 2015 já oferece suporte através do IntelliSense:
  • 10.  O recurso Using Static no C# 6.0:
  • 11.  Resultado dos testes:
  • 12.  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”
  • 13.  O operador nameof no C# 6.0:
  • 14.  Resultado dos testes:
  • 15.  Símbolo de uma lâmpada (Light Bulb) – Quick Actions – Removendo using desnecessários (exemplo):
  • 16.  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.  Exemplo em versões anteriores do C#:
  • 18.  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
  • 19.  Exemplo de inicialização em C# 6.0:
  • 20.  Testando a inicialização de propriedades:
  • 21.  Resultado dos testes:
  • 22.  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
  • 23.  Versões anteriores da linguagem C#:
  • 24.  Exemplo em C# 6.0:
  • 25.  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
  • 26.  Exemplo de declaração de uma propriedade somente leitura:
  • 27.  Utilizando uma Expression-bodied Property:
  • 28.  Testando o uso de uma Expression-bodied Property:
  • 29.  Resultado do teste (Expression-bodied Property):
  • 30.  Exemplo de declaração de um método simples:
  • 31.  Utilizando uma Expression-bodied Function:
  • 32.  Testando o uso de uma Expression-bodied Function:
  • 33.  Resultado do teste (Expression-bodied Function):
  • 34.  Até o Visual Studio 2013 (ERRO):
  • 35.  O Visual Studio 2015 finalmente suporta esta funcionalidade:
  • 36.  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
  • 37.  Utilizando o método Add:
  • 38.  Inicializando no momento da instanciação:
  • 39.  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:
  • 40.  Resultado da execução da aplicação de testes:
  • 41.  Diferentes checagens envolvendo um mesmo tipo de exceção forçavam ao uso de vários “ifs”, em versões anteriores do C#:
  • 42.  Implementação da classe TesteException:
  • 43.  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):
  • 44.  Resultado da execução da aplicação de testes:
  • 45.  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
  • 47.  Selecionando a versão de um package:
  • 48.  Structs -> empregados na representação de informações simples como tempo, coordenadas geométricas ou dados geográficos  A classe System.DateTime representa um bom exemplo deste tipo de estrutura  Utilização de construtores para estas estruturas: ◦ Nenhum construtor (é assumido um construtor default sem parâmetros) ◦ Construtores com parâmetros (os quais são empregados na inicialização das instâncias)
  • 49.  Struct sem construtor
  • 50.  Struct com construtor (obrigatório o uso de parâmetros antes do C# 6.0):
  • 51.  Struct com construtor sem parâmetros no C# 6.0:
  • 52.  Um segundo exemplo de struct em C# 6.0:
  • 53.  Testando o struct apresentado:
  • 54.  Resultado dos testes:
  • 55.  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
  • 56.  Um primeiro exemplo de uso de placeholders:
  • 57.  Alterando o exemplo anterior (inclusão de um novo placeholder e alterações no índice dos demais):
  • 58.  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
  • 59.  Exemplo de uso deste recurso em C# 6.0:
  • 60.  O IntelliSense já suporta também este mecanismo:
  • 61.  Além de variáveis, propriedades e chamadas a métodos, expressões baseadas no operador “?” também podem ser empregadas:
  • 62.  Resultado da execução do exemplo apresentado:
  • 63.  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
  • 64.  Visual Studio 2013 (ERRO):
  • 66.  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
  • 68.  O que é? ◦ Símbolo “?” acompanhando referências  Variáveis  Propriedades  Atributos de classes  Métodos que produzem algum retorno ◦ Substitui o uso de “ifs”
  • 69.  C# 6.0 (código mais enxuto e de rápida leitura):
  • 70.  C# 6.0 – resultado do bloco de testes:
  • 71.  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)
  • 72.  Exemplo de implementação de delegate:
  • 73.  Exemplo de classe na qual é utilizado um evento:
  • 74.  Utilizando o operador “?” => ERRO
  • 75.  Solução => utilizar o método Invoke:
  • 76.  Testando o uso do operador “?” com delegates:
  • 79.  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/  Languages features in C# 6 and VB 14 https://roslyn.codeplex.com/wikipage?title=Language%20Feature%20Sta tus&referringTitle=Documentation
  • 80.  Página no Facebook https://www.facebook.com/RenatoGroffeSW  Perfil no Facebook https://www.facebook.com/renatogroff  LinkedIn http://br.linkedin.com/in/renatogroffe