Novidades do C# 7.2 - parte 1: como habilitar, ref readonly e in parameters

Renato Groffe
4 min readDec 11, 2017

--

Neste primeiro post inicio uma série de artigos que publicarei sobre os recursos que integram o C# 7.2.

Esta nova versão da linguagem C# foi lançada de maneira oficial juntamente com o Update 15.5 do Visual Studio 2017. Para maiores detalhes a respeito dessa atualização acesse este link.

Habilitando o uso do C# 7.2 no Visual Studio 2017

Os exemplos apresentados neste artigo foram implementados a partir do Visual Studio 2017 Update 15.5. É importante ressaltar que releases anteriores não contam com suporte para a versão 7.2 da linguagem C#.

Caso o uso do C# 7.2 não tenha sido previamente habilitado, um alerta aparecerá no Visual Studio 2017 ao se tentar empregar algum dos novos recursos:

A fim de evitar este tipo de problema será necessário alterar as propriedades do projeto em questão. Na seção Build acionar a opção Advanced…:

Aparecerá neste momento a janela Advanced Build Settings, com a opção C# latest major version (default) selecionada:

Em Language version selecionar então C# 7.2 ou C# latest minor version (latest), a fim de habilitar os recursos da nova versão da linguagem:

ref readonly returns

A possibilidade de retornar um valor por referência em um método existe desde a versão 7.0 da linguagem C#. Para saber mais a respeito consulte este artigo: C# 7.0: Ref Returns.

Tal capacidade permite, no entanto, que se modifique o conteúdo de uma referência fora do local em que a mesma foi declarada. Em alguns casos este comportamento pode resultar em efeitos indesejáveis.

Com o C# 7.2 é possível marcar o retorno de um método com as palavras-chaves ref e readonly, garantindo assim que a referência retornada não sofra modificações. O método ObterContador no tipo ClasseExemplo demonstra o uso deste novo recurso:

A tentativa de efetuar a alteração da referência retornada por ObterContador ocasionará um erro de compilação, conforme já mencionado:

Na listagem a seguir é possível observar exemplos de utilização do método ObterContador do tipo ClasseExemplo, com a variável que receberá seu retorno estando marcada com ref readonly:

A próxima imagem traz o resultado da execução deste código:

in parameters

Além da passagem de parâmetros por referência utilizando ref e out (alternativas existentes desde as primeiras versões), o C# 7.2 adicionou uma terceira possibilidade: a palavra-chave in.

Este novo recurso permite que parâmetros funcionem como referências somente leitura, impedindo assim a modificação de valores em um método que dependa dessa funcionalidade.

A tentativa de atribuir um valor a uma variável associada à palavra-chave in resultará em um erro (diferentemente de declarações que empreguem ref), como indicado na imagem a seguir:

A próxima listagem traz um exemplo de uso da palavra-chave in na declaração de uma referência somente leitura:

Diferentemente de ref, não será obrigatório empregar a palavra-chave in em um método receba referências somente leitura. Constantes e expressões também podem ser utilizadas em parâmetros definidos com in. A listagem a seguir exemplifica estes diversos aspectos, com diferentes tipos de chamadas ao método estático Calcular da classe Fatorial:

Na próxima imagem está o resultado da execução desta aplicação de testes:

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker

Responses (1)