📊 Capítulo 03: Condicionais & Pattern Matching
Especialização em Sistemas com C#
🗺️ A Elegância das Switch Expressions e Property Patterns
flowchart TD
INPUT["Objeto Pedido (Cliente, ValorTotal, TipoFrete)"]
--> SWITCH["decimal frete = pedido switch { ... }"]
SWITCH --> P1["{ Cliente.Especial: true } => 0m (Property Pattern com frete grátis!) ⚡"]
SWITCH --> P2["{ ValorTotal: > 500m } => 10m (Relational Pattern)"]
SWITCH --> P3["{ TipoFrete: Frete.Expresso } => 35m"]
SWITCH --> P_DEF["_ => 20m (Discard / Caso padrão)"]
style INPUT fill:#ede7f6,stroke:#512da8,stroke-width:2px
style SWITCH fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style P1 fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style P2 fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
style P3 fill:#fff9c4,stroke:#fbc02d,stroke-width:1.5px
style P_DEF fill:#ffebee,stroke:#d32f2f,stroke-width:1.5px
🎯 Slide 1: Switch Expressions Concisas
string statusDescricao = codigo switch
{
200 => "OK",
400 or 422 => "Erro de Validação do Cliente",
401 => "Não Autorizado",
404 => "Não Encontrado",
>= 500 and <= 599 => "Falha Crítica do Servidor",
_ => "Código Desconhecido"
};
- Retorna expressões imutáveis diretamente sem palavras-chave
case,breakoureturnrepetitivos!
🎯 Slide 2: Positional Patterns e Tuplas
var resultado = (loginValido, ehAdmin) switch
{
(true, true) => "Acesso Total Liberado",
(true, false) => "Acesso Restrito Liberado",
(false, _) => "Credenciais Inválidas!"
};
🎯 Slide 3: Type Pattern com Desempacotamento
if (obj is Veiculo { Portas: 4 } v)verifica se o objeto é do tipoVeiculo, se possui a propriedadePortas == 4e vincula a variávelvtipada com segurança atômica!
🔗 Navegação do Capítulo 03
| 📖 Ler Conteúdo Completo | 🧠 Fazer Quiz | 💻 Ver Exemplos | 🧩 Exercícios |
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim