O documento resume as principais informações profissionais e experiência de Renato Groffe na área de tecnologia, incluindo mais de 15 anos de experiência, pós-graduação em engenharia de software, MBA em business intelligence, além de cursos e certificações técnicas. O documento também fornece instruções e links para instalação do Visual Studio 2015 CTP 5 em uma máquina virtual e resume os principais recursos novos do C# 6.0 e do Visual Studio 2015.
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)
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:
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”
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
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
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
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:
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
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
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)
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
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
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
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):
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)