0Pricing
C# Academy · Aula

Padrões relacionais e lógicos

Combine condições nos padrões.

Padrões relacionais e lógicos é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C# Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C# Academy inclui 4 aulas no total.

Padrões relacionais

Um padrão relacional compara a entrada com uma constante usando <, >, <= ou >=. Ele corresponde quando a comparação é verdadeira.

Introduzidos no C# 9, os padrões relacionais tornam as verificações de intervalo concisas em braços de seleção e expressões is, sem a necessidade de escrever comparações explícitas.

int temp = 18;
string level = temp switch
{
    < 0  => "freezing",
    < 15 => "cold",
    < 25 => "mild",
    _    => "hot"
};
System.Console.WriteLine(level);

Padrões relacionais em verificações de tipo

Os padrões relacionais também funcionam em expressões is, produzindo verificações booleanas legíveis.

n is > 0 parece quase uma frase em inglês e retorna um booleano que pode ser usado em condições, atribuições ou predicados de LINQ.

using System;

class Program {
    static void Main() {
        int score = 82;
        bool passed = score is >= 60;
        Console.WriteLine(passed);
    }
}

O padrão lógico e

O padrão lógico and exige que ambos os subpadrões correspondam. Ele é perfeito para intervalos limitados.

>= 1 and <= 12 corresponde a valores dentro de um intervalo inclusivo. Sem and, seria impossível expressar limites dos dois lados em um único padrão.

int month = 6;
bool valid = month is >= 1 and <= 12;
System.Console.WriteLine(valid);

O padrão lógico ou

O padrão lógico or corresponde quando qualquer um dos subpadrões corresponde. Ele agrupa valores alternativos em um único braço.

Em vez de repetir braços para casos relacionados, 'a' or 'e' or 'i' os reúne. Isso mantém as expressões de seleção compactas e revela sua intenção.

char c = 'e';
string kind = c switch
{
    'a' or 'e' or 'i' or 'o' or 'u' => "vowel",
    _ => "consonant"
};
System.Console.WriteLine(kind);

O padrão lógico de negação

O padrão lógico not corresponde quando seu subpadrão não corresponde. O uso mais comum é not null.

Ele também nega outros padrões, como not 0 ou not (> 100), permitindo expressar exclusões claramente dentro de um único braço.

object? value = "hi";
if (value is not null)
    System.Console.WriteLine("present");

Combinar padrões lógicos

Os padrões lógicos podem ser combinados. Pode encadear and, or e not para criar condições elaboradas, usando parênteses para controlar a precedência.

A precedência é: not tem a maior prioridade, seguido de and e depois or. Adicione parênteses sempre que a intenção puder ser ambígua.

using System;

class Program {
    static string Classify(int n) => n switch {
        < 0 or > 100 => "out of range",
        >= 0 and <= 50 => "low half",
        _ => "high half"
    };
    static void Main() => Console.WriteLine(Classify(75));
}

Intervalos em avaliações

Os padrões relacionais e lógicos juntos representam de forma clara as tabelas clássicas de notas.

Como os braços são verificados de cima para baixo, pode usar limites superiores simples ou combinar limites com and para obter intervalos explícitos. Os dois estilos são válidos; escolha o mais claro.

using System;

class Program {
    static char Grade(int s) => s switch {
        >= 90 => 'A',
        >= 80 and < 90 => 'B',
        >= 70 and < 80 => 'C',
        _ => 'F'
    };
    static void Main() => Console.WriteLine(Grade(85));
}

Não nulo com padrões de propriedade

Combinar not null com padrões de tipo e de propriedade produz guardas seguras e expressivas.

obj is Person { Name: not null } p corresponde a um Person não nulo cujo Name também não é nulo e o associa a uma variável. Isso evita verificações nulas em cascata.

record Person(string? Name);

object obj = new Person("Kai");
if (obj is Person { Name: not null } p)
    System.Console.WriteLine(p.Name);

Negar intervalos

Pode negar um grupo relacional com not e parênteses para expressar exclusões.

not (>= 1 and <= 5) corresponde a qualquer valor fora do intervalo de 1 a 5. Para alguns leitores, isso é mais direto do que o equivalente < 1 or > 5.

using System;

class Program {
    static void Main() {
        int n = 9;
        bool outside = n is not (>= 1 and <= 5);
        Console.WriteLine(outside);
    }
}

Combinar com padrões de tipo

Os padrões lógicos também podem ser combinados com padrões de tipo. o is int or long corresponde a tipos numéricos inteiros em uma única verificação.

Isso é útil para tratar vários tipos relacionados de maneira uniforme. Observe que os dois lados de or devem ser compatíveis com a forma como o resultado será usado.

object o = 5L;
string kind = o switch
{
    int or long => "integral",
    float or double => "floating",
    _ => "other"
};
System.Console.WriteLine(kind);

Diretrizes de legibilidade

Padrões lógicos são expressivos, mas podem ficar densos. Mantenha os ramos curtos, prefira intervalos com and e coloque parênteses em combinações de and/or para maior clareza.

Quando uma condição precisa de muitas cláusulas ou variáveis externas, uma guarda when pode ser mais fácil de ler do que um padrão lógico longo. Escolha a opção que comunicar melhor a intenção.

int n = 42;
string r = n switch
{
    > 0 and < 10 when n % 2 == 0 => "small even",
    _ => "other"
};
System.Console.WriteLine(r);

Verificação rápida

Teste sua compreensão dos padrões relacionais e lógicos.

Recapitulação

Padrões relacionais (< > <= >=) fazem comparações com constantes. Padrões lógicos combinam subpadrões com and, or e not.

A precedência é not, depois and e, por fim, or; coloque parênteses ao combiná-los. A seguir, abordaremos padrões de lista e tupla.

Perguntas Frequentes

A aula “Padrões relacionais e lógicos” é grátis?

Sim — o texto completo de “Padrões relacionais e lógicos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C# Academy, atualize para CoddyKit PRO. O curso de C# Academy inclui 4 aulas no total.

O que vou aprender em “Padrões relacionais e lógicos”?

Combine condições nos padrões. Você pratica C# Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar C# Academy?

Nenhuma experiência prévia é necessária. C# Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Padrões relacionais e lógicos”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de C# Academy?

Sim. Cada aula de C# Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Expressões switch
  2. Padrões de tipo e propriedade
  3. Padrões relacionais e lógicos
  4. Padrões de listas e tuplas
← Voltar para C# Academy