Novidades do C# 12: ref readonly parameters
O C# 7.2 trouxe como uma de suas novidades uma capacidade chamada in parameters, a qual determina que uma referência fornecida como parâmetro a um método não sofra alterações no interior do mesmo. Abordei esta funcionalidade em um artigo publicado ainda no ano de 2017 neste blog:
Novidades do C# 7.2 - parte 1: como habilitar, ref readonly e in parameters
Na listagem a seguir temos um exemplo de utilização de in parameter na definição do método estático Calcular (parâmetro numero), que integra o tipo Fatorial (uma implementação de testes para cálculos de fatoriais):
A tentativa de alterar o parâmetro numero no método Calcular resultará em erros de compilação, como indicado na imagem seguinte:
Podemos substituir no C# 12 o uso de in por ref readonly, alternativa que pode facilitar o entendimento em implementações que empregavam originalmente apenas ref (e que, portanto, permitiam alterações em uma referência):
Assim como acontece com in, a utilização de ref readonly também impede que um parâmetro sofra alterações no método em que foi declarado. É o que observamos na próxima imagem:
Ao invocar o método Fatorial podemos repassar uma variável como parâmetro usando as palavras-chave ref ou in (não há diferenças práticas entre essas 2 alternativas):
O resultado da execução desta Console Application a partir do Visual Studio 2022 está na imagem seguinte:
Essa aplicação foi disponibilizada no seguinte repositório do GitHub:
https://github.com/renatogroffe/CSharp12-RefReadOnlyParameters
Caso achem útil esta solução, peço por favor um ⭐️ no repositório apoiando. Fica também o convite para que vocês me sigam lá no GitHub!