o futuro da linguagem de programação c# (c# 7)

10
O futuro da linguagem de programação C# (C# 7) Rogério Moraes de Carvalho VITA Informática rogeriom.wordpress.com | @ rogeriomc

Upload: rogerio-moraes-de-carvalho

Post on 08-Feb-2017

661 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: O futuro da linguagem de programação C# (C# 7)

O futuro da linguagem de programação C# (C# 7)

Rogério Moraes de CarvalhoVITA Informática

rogeriom.wordpress.com | @rogeriomc

Page 2: O futuro da linguagem de programação C# (C# 7)

AgendaO futuro da linguagem de programação C# (C# 7)

Visual Studio “15” Preview 2

Literais binários

Separadores de dígitos

Tuplas

Referências locais

Funções locais

Correspondência de padrão

Informações adicionais

Page 3: O futuro da linguagem de programação C# (C# 7)

Visual Studio “15” Preview 2

O Preview 2 foi liberado em 10 de maio de 2016

www.visualstudio.com/downloads/visual-studio-next-downloads-vs (Download)

www.visualstudio.com/en-us/news/releasenotes/vs15-relnotes (Notas da versão)

Ativação de características experimentais do compilador C#

Demo 1: Acréscimo de símbolos de compilação condicional: __DEMO__ e __DEMO_EXPERIMENTAL__

Page 4: O futuro da linguagem de programação C# (C# 7)

Literais binários

Representação de literais numéricos na base binária (2)

Sintaxe: 0bbn...b3b2b1 ou 0Bbn...b3b2b1, com b1, b2, b3, ..., bn {0, 1} e n 1

[Flags]public enum Assuntos {

AspNetCore = 0b00000001, // 1DotNetCore = 0b00000010, // 2EntityFrameworkCore = 0b00000100, // 4FrameworksCore = 0b00000111, // 7Conteiner = 0b00001000, // 8IoT = 0b00010000, // 16Azure = 0b00100000 // 32

}

Demo 2: Uso de literais binários numa enumeração com o atributo Flags

Page 5: O futuro da linguagem de programação C# (C# 7)

Separadores de dígitos

Separação de dígitos em literais com o caractere _

Exemplos: 0b0100_0111, 1_928_345, 0xF0_A8_D4_1A

[Flags]public enum Assuntos {

AspNetCore = 0b0000_0001, // 1DotNetCore = 0b0000_0010, // 2EntityFrameworkCore = 0b0000_0100, // 4FrameworksCore = 0b0000_0111, // 7Conteiner = 0b0000_1000, // 8IoT = 0b0001_0000, // 16Azure = 0b0010_0000 // 32

}

Demo 3: Uso de separadores de dígitos em literais binários numa enumeração com o atributo Flags

Page 6: O futuro da linguagem de programação C# (C# 7)

Tuplas

Tipos tupla têm uma sintaxe similar a listas de parâmetros

A sintaxe (string trilha, int numeroPalestras) indica um tipo de

estrutura anônima com dois campos públicos: trilha do tipo string e

numeroPalestras do tipo int

public static IEnumerable<(string trilha, int numeroPalestras)>PalestrasPorTrilha(this IEnumerable<Palestra> palestras) {return from palestra in palestras

group palestra by palestra.Trilha into gorderby g.Count() descending, g.Keyselect (g.Key, g.Count());

}

Demo 4: Uso de tuplas no tipo de retorno de um método

Page 7: O futuro da linguagem de programação C# (C# 7)

Referências locais

Para permitir o uso de referências em variáveis locais

int a = 1;ref int b = ref a;

Console.WriteLine($"a = {a}, b = {b}"); // a = 1, b = 1a = 2;Console.WriteLine($"a = {a}, b = {b}"); // a = 2, b = 2

Demo 5: Referências locais

Page 8: O futuro da linguagem de programação C# (C# 7)

Funções locais

Funções que são declaradas e utilizadas dentro de um membro de

função

static void Main(string[] args){

void imprimirPalestras(IEnumerable<Palestra> palestras){

foreach (var palestra in palestras) {Console.WriteLine(palestra);

}}imprimirPalestras(obterPalestras());

}

Demo 6: Funções locais

Page 9: O futuro da linguagem de programação C# (C# 7)

Correspondência de padrão

Permite, por exemplo, o teste de um tipo e armazenamento do tipo

convertido numa variável

Palestra primeiraPalestra = obterPalestras().First();

if (primeiraPalestra is PalestraEmTrilha primeiraPalestraEmTrilha) {Console.WriteLine(primeiraPalestraComTrilha.Trilha);

}

Demo 7: Correspondência de padrão

Page 10: O futuro da linguagem de programação C# (C# 7)

Informações adicionais

Language Feature Status (GitHub)

github.com/dotnet/roslyn/blob/future/docs/Language%20Feature%20Status.md

C# 7 Work List of Features (GitHub)

github.com/dotnet/roslyn/issues/2136

Build 2016 – The Future of C# (Channel 9)

channel9.msdn.com/Events/Build/2016/B889

C# 7 and Beyond with Mads Torgersen (InfoQ)

www.infoq.com/news/2016/06/csharp-mads-torgersen-qcon