Pular para o conteúdo
.NETPattern matching e switch expressions
Módulo 01Fundamentos da Plataforma e da Linguagem

Pattern matching e switch expressions

intermediario 25 min de leitura·Atualizado · .NET 9
Resumo

Pattern matching testa a forma de um valor (tipo, propriedades, faixa) e extrai dados numa só expressão. Combinado com switch expression, substitui cadeias longas de if/is/cast.

1. Objetivos de Aprendizagem#

  • Usar padrões de tipo, propriedade, relacionais e lógicos.
  • Escrever switch expressions claros.
  • Aplicar padrões em validação e mapeamento.

2. Pré-requisitos#

  • Herança e polimorfismo (tópico 5.2).

3. Conceito#

Padrões testam a "forma" de um valor:

  • Tipo: obj is Produto p (testa e já atribui p).
  • Propriedade: p is { Preco: > 100 }.
  • Relacional: < 5, >= 0.
  • Lógico: and, or, not.
  • Constante / null: is null, is 0.

O porquê: expressar decisões complexas de forma declarativa, sem casts manuais e sem esquecer casos.

4. Mão na Massa#

4.1. Setup#

Shell
dotnet new console -n Catalog.Patterns
cd Catalog.Patterns

4.2. Implementação Passo a Passo#

  1. Padrão de tipo:
C#
object valor = 42;
if (valor is int n && n > 10)
    Console.WriteLine($"inteiro grande: {n}");
  1. switch expression com padrões de propriedade e relacionais:
C#
record Produto(string Nome, decimal Preco, int Estoque);

string Classificar(Produto p) => p switch
{
    { Estoque: 0 } => "esgotado",
    { Preco: > 1000 } => "premium",
    { Preco: > 100 and <= 1000 } => "intermediário",
    _ => "básico"
};

Console.WriteLine(Classificar(new Produto("Monitor", 1500m, 3))); // premium
  1. Padrão lógico not:
C#
static bool Invalido(string? nome) => nome is null or "";

4.3. Executando#

Shell
dotnet run

5. Exemplo Completo#

O método Classificar decide a faixa de um produto combinando padrões de propriedade e relacionais numa única expressão — legível e exaustiva.

6. Boas Práticas e Armadilhas#

FaçaEvite
Usar switch expression para mapear estadosCadeias de if/else if com casts manuais
Ter um caso padrão _Deixar entradas sem cobertura
Padrões de propriedade para validações clarasExtrair dados com as + checagem de null repetida
Atenção

a ordem dos casos importa — o primeiro padrão que casar vence. Coloque os mais específicos antes dos mais gerais.

7. Segurança e Produção#

  • Sempre inclua _ (padrão) ao classificar dados externos, para não deixar valores inesperados sem tratamento definido.

8. Exercícios#

  • Fácil: use is para testar tipo e extrair a variável.
  • Médio: escreva um switch expression que classifica uma nota (0–10) em conceitos.
  • Desafio: combine padrões de propriedade e and/or para validar um DTO.

9. Resumo#

Pattern matching testa forma (tipo, propriedade, faixa) e extrai dados; switch expression torna decisões declarativas e exaustivas. Ordene do específico ao geral e tenha um caso padrão.

10. Próximos Passos#

A seguir, inicialização moderna: init, required e target-typed new.

11. Referências#

06-02 — Pattern matching e switch expressions | Curso ASP.NET Core