SlideShare una empresa de Scribd logo
1 de 10
Descargar para leer sin conexión
O futuro da linguagem de programação C#
(C# 7)
Rogério Moraes de Carvalho
VITA Informática
rogeriom.wordpress.com | @rogeriomc
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
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__
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
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
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
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
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
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
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

Más contenido relacionado

Más de Rogério Moraes de Carvalho

Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework CoreUm novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework CoreRogério Moraes de Carvalho
 
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvemASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvemRogério Moraes de Carvalho
 
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF CoreExplorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF CoreRogério Moraes de Carvalho
 
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7Rogério Moraes de Carvalho
 
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...Rogério Moraes de Carvalho
 
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...Rogério Moraes de Carvalho
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Rogério Moraes de Carvalho
 
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Rogério Moraes de Carvalho
 
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...Rogério Moraes de Carvalho
 
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...Rogério Moraes de Carvalho
 
Uma visão de mercado das linguagens de programação
Uma visão de mercado das linguagens de programaçãoUma visão de mercado das linguagens de programação
Uma visão de mercado das linguagens de programaçãoRogério Moraes de Carvalho
 
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...Rogério Moraes de Carvalho
 
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...Rogério Moraes de Carvalho
 
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...Rogério Moraes de Carvalho
 
The Developer's Conference (TDC) 2013 - Florianópolis: HTML5 + CSS3 em múlti...
The Developer's Conference (TDC) 2013 - Florianópolis:  HTML5 + CSS3 em múlti...The Developer's Conference (TDC) 2013 - Florianópolis:  HTML5 + CSS3 em múlti...
The Developer's Conference (TDC) 2013 - Florianópolis: HTML5 + CSS3 em múlti...Rogério Moraes de Carvalho
 

Más de Rogério Moraes de Carvalho (20)

Docker com ASP.NET Core e Hospedagem no Azure
Docker com ASP.NET Core e Hospedagem no AzureDocker com ASP.NET Core e Hospedagem no Azure
Docker com ASP.NET Core e Hospedagem no Azure
 
Tecnologias XML e XML no SQL Server 2016
Tecnologias XML eXML no SQL Server 2016Tecnologias XML eXML no SQL Server 2016
Tecnologias XML e XML no SQL Server 2016
 
Cebraspe 2016: .NET Core e ASP.NET Core
Cebraspe 2016: .NET Core e ASP.NET CoreCebraspe 2016: .NET Core e ASP.NET Core
Cebraspe 2016: .NET Core e ASP.NET Core
 
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework CoreUm novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
 
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvemASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
 
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF CoreExplorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
 
Suporte XML nativo no SQL Server 2014/2016
Suporte XML nativo no SQL Server 2014/2016Suporte XML nativo no SQL Server 2014/2016
Suporte XML nativo no SQL Server 2014/2016
 
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
 
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
 
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
 
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
 
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
 
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
 
Uma visão de mercado das linguagens de programação
Uma visão de mercado das linguagens de programaçãoUma visão de mercado das linguagens de programação
Uma visão de mercado das linguagens de programação
 
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
 
`
``
`
 
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
 
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
 
The Developer's Conference (TDC) 2013 - Florianópolis: HTML5 + CSS3 em múlti...
The Developer's Conference (TDC) 2013 - Florianópolis:  HTML5 + CSS3 em múlti...The Developer's Conference (TDC) 2013 - Florianópolis:  HTML5 + CSS3 em múlti...
The Developer's Conference (TDC) 2013 - Florianópolis: HTML5 + CSS3 em múlti...
 

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

  • 1. O futuro da linguagem de programação C# (C# 7) Rogério Moraes de Carvalho VITA Informática rogeriom.wordpress.com | @rogeriomc
  • 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. 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. 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. 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. 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. 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. 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. 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. 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