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