Novidades do C# 11: Parameter null-checking
Neste novo artigo dou continuidade à série sobre novidades previstas para o C# 11, desta vez abordando a funcionalidade chamada de Parameter null-checking.
ATENÇÃO
Este recurso provavelmente não será liberado com o lançamento do .NET 7. Maiores detalhes nos links:
CA1062 is thrown after updating to !! parameter null checking | Stack Overflow
Caso ainda não tenha lido o primeiro artigo desta série e os conteúdos que comecei a produzir sobre .NET 7 (ou mesmo deseje revê-los), deixo aqui os links de tais posts:
Novidades do C# 11: primeiros passos, melhorias em String Interpolation
.NET 7: primeiros testes com o Preview 1
Supondo um código como o apresentado na listagem a seguir, em que se faz uso do método Show de MessageHelper e há um tratamento para exceções do tipo ArgumentException:
Na implementação de Show em MessageHelper temos uma validação verificando se o valor do parâmetro message é nulo, a fim de retornar uma ArgumentException em casos como esses:
Podemos refatorar este código, empregando o operador !! (Parameter null-checking) após o nome de um parâmetro como alternativa para efetuar tais verificações de valores nulos. Com isso estamos dispensados do uso da combinação if/throw com ArgumentException:
Como resultado da execução deste exemplo baseado no Preview 1 do .NET 7 temos:
Na próxima listagem está uma variação da classe MessageHelper com uma implementação de Show empregando uma lambda expression, em uma Console Application criada com o .NET 6 e na qual foi habilitado o uso do C# 11:
O resultado da execução desta segunda aplicação está na próxima imagem:
Estes 2 exemplos utilizando Parameter null-checking com o .NET 6 e o .NET 7 foram disponibilizados no GitHub:
https://github.com/renatogroffe/CSharp11-ParameterNullChecking
E termino este post com um convite…
Nesta segunda dia 07/03 às 21:00 — horário de Brasília — teremos mais um evento online e gratuito no canal Canal .NET.
Nesta live serão abordadas dicas, truques e novidades no Microsoft Azure visando simplificar a implementação de aplicações .NET e ASPNET Core na nuvem!
Azure API Management, Azure Key Vault, Azure Locks e muito mais!
Palestrantes:
- Renato Groffe (Microsoft MVP, MTAC)
- Ewerton Rodrigues Jordão (Microsoft MVP)
- Diego Moreira Matos (Microsoft MVP)Para participar faça sua inscrição no link a seguir, a transmissão acontecerá via YouTube: