Novidades do C# 7.1

3 set

Fala galera.

Vamos falar neste post sobre as novas funcionalidades do C# 7.1. Lançado recentemente os novos recursos do C# 7.1 vem junto com o pacote de atualizações (update 15.3.3) do Visual Studio 2017 então não perca tempo e atualize a versão do seu Visual Studio ou faça o download do Visual Studio Community 2017 clicando aqui.

Habilitando o C# 7.1

Para ativar os novos recursos do C# 7.1, vá na propriedades do projeto, selecione a aba Build e clique em Avançado conforme figura abaixo.

Irá abrir uma nova janela chamada Advanced Build Settings, com a opção C# latest major version (default) selecionada, selecione o C# 7.1 e pronto o C# 7.1 estará ativado, veja o exemplo na figura abaixo.

Agora sem mais delongas, vamos ao que interessa.

Async Main:

Não era possível na versão do C# 7.0, criar o método Main como assíncrono porém nesta versão já é possível. Antes tínhamos que fazer isso aqui.

static int Main()
{
    return DoAsyncWork().GetAwaiter().GetResult();
}

Agora como podemos fazer

static async Task<int> Main()
{
    return await FacaAlgumTrabalhoAsync();
}

 

Default Expression

Na versão anterior da linguagem, a palavra default era usada para retornar o tipo padrão de um estrutura de dados, logo nesta palavra-chave tinha que informar qual tipo de estrutura que seria usada para retornar, veja o exemplo abaixo:

int x = default(int);
//ou
double y = default(double)
//ou
DateTime data = default(DateTime)
//ou
Func<string, bool> whereClause = default(Func<string, bool>);

Agora basta informar a palavra default no C# 7.1

int x = default;
//ou
double y = default
//ou
DateTime data = default
//ou
Func<string, bool> whereClause = default;

Podemos usar o default expression nas seguintes situações:

  • Em operações envolvendo ternários;
  • Em retorno de funções e expressões lambda;
  • Valor default em métodos que possuam parâmetros opcionais;
  • Em arrays, variáveis e constantes.

Inferência de nomes em tuplas

Esse recurso é um pequeno aprimoramento para utilização de tuplas que foi introduzido no C# 7.0. Acontece que muitas vezes, quando você inicializa uma tupla, os nomes das propriedades da tuplas que seria do lado esquerdo são os mesmo nomes do lado direito, ou seja, geralmente os nomes das propriedades são os mesmo nomes que as variáveis de valor, veja o exemplo abaixo:

int quantidade = 15;
int soma = 30;
var tupla = (quantidade: quantidade, soma: soma);

Agora podemos fazer deste jeito aqui.

int quantidade = 15;
int soma = 30;
var tupla = (quantidade, soma); //Agora os nomes das propriedades serão quantidade e soma

Podemos usar o mesmo principio quando estamos usando LINQ conforme exemplo abaixo

var arqs = new DirectoryInfo(@"C:\")
               .GetFiles()
               .Select(a => (a.Name, a.FullName));  //Serão geradas tuplas com as propriedades Name e FullName

 

Error version pragma

Este é um pequeno recurso não documentado para auxiliar na resolução de problemas de versão de linguagem C#. Digite #error version e você verá a versão do compilador que você está usando, bem como a configuração da versão atual.

Bem esses são alguns dos novos recursos do C# 7.1 e espero que vocês tenham gostado também.

Não deixem de comentar o que vocês acharam dos novos recursos.

Abs e até a próxima

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *