C# 9 - Os novos operadores : IS NOT, AND , OR
Neste artigo vou apresentar os novos operadores NOT, AND e OR disponíveis a partir da versão 9.0 do C#. |
Na versão 9.0 da linguagem C# foram adicionados novos operadores de correspondência de padrões que podem ser combinados com o operador is. Isto é um syntax sugar ou açúcar de sintaxe que torna a lógica condicional mais fácil de ler.
Operador NOT : is not A
A palavra chave NOT representa um padrão de negação e exige que um padrão não corresponda.
Assim podemos agora usar o código abaixo:
static void Main(string[] args) { object novoObjeto = new object();
// Antes
// C# 9
Console.ReadLine(); |
Antes era preciso usar o operador ! para negar a correspondência com o operador is.
Operador
AND :
is A and B
A palavra-chave AND representa um padrão de
conjunção e exibe que ambos os padrões correspondam. (esse operador pode ser
combinado com os operadores >= e <= )
static void Main(string[] args) { var numero = 9;
if (numero is >= 0 and <= 10) |
Nas versões anteriores do C# esse código poderia ser escrito assim:
if (numero
is >= 0 && <= 10) { Console.WriteLine("O número esta entre 0 e 10 (inclusive)"); } |
Note que o código anterior ficou mais fácil de ler.
Operador OR
: is A or B
A palavra-chave OR representa um padrão de
disjunção e exibe que quaisquer um dos padrões correspondam. (esse operador
pode ser combinado com os operadores >= e <= )
static void Main(string[] args) { var numero = 10;
if (numero is 0 or 10) |
O código acima seria equivalente ao código a seguir nas versões anteriores:
if (numero ==0 || numero == 10)
{
Console.WriteLine("O número é 0 ou 10");
}
|
Novamente a legibilidade melhorou muito.
Naturalmente podemos combinar esses operadores e isso mostra de forma inequívoca a melhoria na legibilidade do código:
Antes:
public static bool separador(char c) => (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '.' || c == ','; |
C# 9:
public static bool separador(char c) =>c is (>= 'a' and <= 'z') or (>= 'A' and <= 'Z') or '.' or ','; |
Fica evidente que versão do C# 9, usando os novos operadores é mais expressiva e concisa. Ela se baseia em padrões sobre o parâmetro c , que é mencionado apenas uma vez.
O código usado nas versões anteriores dependia de expressões booleanas onde cada expressão precisa de sua própria menção de c, o que torna essa abordagem menos concisa.
Em termos de complexidade de código, as novas palavras-chave and e or são equivalentes a && e ||.
Dessa forma a linguagem C# agora possui 3 conjuntos de 3 operadores booleanos:
E estamos conversados...
'Porque em esperança fomos salvos. Ora a esperança que
se vê não é esperança; porque o que alguém vê como o esperará ? Mas, se
esperamos o que não vemos, com paciência o esperamos.'
Romanos 8:24,25
Referências:
C# - Lendo e escrevendo em arquivos textos e binários
C# - Entendo o I/O na plataforma .NET
C# - Fluxo assíncrono ou async streams
C# 9.0 - Apresentando Records
C#- Apresentando Streams assíncronos
O que há de novo com o C# 9.0
C# 9.0 - Instruções de nível superior
Init-only Properties - C# 9.0