Novidades do C# 11: alertas para nomes de classes em minúsculo

Renato Groffe
3 min readMay 2, 2023

--

As palavras-chave/keywords do C# são identificadores especiais do ponto de vista do compilador dessa linguagem, estando normalmente associadas a implementações básicas como declarações de estruturas, desvios condicionais e manipulação de valores. Uma característica comum a todas as keywords está no fato de que a escrita das mesmas sempre se dá em letras minúsculas, devendo-se ressaltar ainda que instruções em C# são case-sensitive por padrão.

Uma relação completa das palavras-chave previstas atualmente para o C# pode ser encontrada no link:

https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/

Por se tratar de elementos de uso reservado, não podemos empregar palavras-chaves em nomes de classes, métodos, variáveis e outras construções. E o C# 11 agora vai além disso, gerando alertas de compilação/build para classes cujo nome seja formado apenas por caracteres minúsculos. A esta nova capacidade foi dado o nome de Warning wave 7, um tipo de alerta identificado pelo código CS8981 e cuja utilização demonstrei recentemente em uma live no Canal .NET (que pode ser assistida gratuitamente no YouTube e inclui outros recursos do C# 11):

O objetivo de tal novidade está em evitar que nomes de classes conflitem com prováveis novas keywords, partindo do pressuposto que estas últimas sempre serão formadas por caracteres minúsculos. Como exemplo podemos tomar as classes test, assert e validator, apresentadas na listagem a seguir:

Mesmo com seus nomes formados apenas por letras minúsculas, esses tipos podem ser utilizados normalmente em uma aplicação .NET. É o que demonstra a próxima listagem:

Cujo resultado da execução está na imagem seguinte:

Clique nesta imagem para visualizar com uma melhor resolução

Os alertas produzidos podem ser visualizados a partir do Visual Studio 2022:

Clique nesta imagem para visualizar com uma melhor resolução

Ou até mesmo durante o processo de compilação de um projeto via .NET CLI, como no exemplo a seguir em que se fez uso do Windows Terminal:

Clique nesta imagem para visualizar com uma melhor resolução

Este exemplo também foi disponibilizado no GitHub:

https://github.com/renatogroffe/CSharp11-WarningWave7

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!

--

--

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

No responses yet