Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,642 views

Published on

Há quase um ano e meio, o time de projeto da linguagem de programação C# na Microsoft está planejando, debatendo, experimentando e testando as ideias dos próximos recursos a serem incorporados na próxima versão da linguagem. A palestra tem como objetivo explorar o que esperar de um futuro próximo da linguagem. A expectativa é que a nova versão da linguagem C# seja lançada juntamente com a próxima versão do Visual Studio, de codinome Visual Studio “15”. Muito provavelmente, o Visual Studio 2017 (ou, quem sabe, Visual Studio 2016) será lançado em novembro de 2016.

Published in: Technology
  • Be the first to comment

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

  1. 1. O futuro da linguagem de programação C# (C# 7) Rogério Moraes de Carvalho VITA Informática rogeriom.wordpress.com | @rogeriomc
  2. 2. Agenda O 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
  3. 3. 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__
  4. 4. 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, // 1 DotNetCore = 0b00000010, // 2 EntityFrameworkCore = 0b00000100, // 4 FrameworksCore = 0b00000111, // 7 Conteiner = 0b00001000, // 8 IoT = 0b00010000, // 16 Azure = 0b00100000 // 32 } Demo 2: Uso de literais binários numa enumeração com o atributo Flags
  5. 5. 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, // 1 DotNetCore = 0b0000_0010, // 2 EntityFrameworkCore = 0b0000_0100, // 4 FrameworksCore = 0b0000_0111, // 7 Conteiner = 0b0000_1000, // 8 IoT = 0b0001_0000, // 16 Azure = 0b0010_0000 // 32 } Demo 3: Uso de separadores de dígitos em literais binários numa enumeração com o atributo Flags
  6. 6. 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 g orderby g.Count() descending, g.Key select (g.Key, g.Count()); } Demo 4: Uso de tuplas no tipo de retorno de um método
  7. 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 = 1 a = 2; Console.WriteLine($"a = {a}, b = {b}"); // a = 2, b = 2 Demo 5: Referências locais
  8. 8. 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
  9. 9. 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
  10. 10. 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

×