Renato Groffe tem mais de 15 anos de experiência em tecnologia e possui pós-graduação em Engenharia de Software e MBA em Business Intelligence. Ele fornece links para suas páginas no Facebook e LinkedIn e discute recursos novos no Visual Studio 2015 e na linguagem C#, como string interpolation e o operador null-conditional.
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):
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
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)
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:
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”
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
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
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
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:
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
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
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
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
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):
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)