IRONSOFTWAREHOME
ATUALIZAÇÕES DO DESENVOLVEDOR

Correspondência de padrões com switch em C# (Como funciona para desenvolvedores)

Curtis Chau
Curtis Chau
Updated: 23 de abril de 2026

Trabalhar com arquivos PDF em C# geralmente envolve lidar com diferentes tipos de documentos, ações ou fontes de dados. Tradicionalmente, os desenvolvedores podem recorrer a longas cadeias if-else ou instruções switch aninhadas para gerenciar vários valores e tipos de entrada ou decisões de saída. Mas com recursos modernos do C#, como o casamento de padrões com o switch , seu código pode se tornar muito mais elegante, legível e fácil de manter.

Quando combinada com uma biblioteca PDF poderosa como o IronPDF , a correspondência de padrões de alternância permite criar uma lógica mais inteligente e limpa para o processamento de documentos. Neste artigo, exploraremos como usar os recursos avançados de correspondência de padrões do C# — como padrões de tipo, padrões de propriedade e padrões relacionais — juntamente com o IronPDF para otimizar seus fluxos de trabalho de geração de PDFs.

What is Switch Pattern Matching in C#?

O recurso de correspondência de padrões do Switch foi introduzido no C# 7 e aprimorado continuamente em versões posteriores. Ao contrário das instruções switch tradicionais, que só correspondem a valores constantes, o casamento de padrões permite avaliar tipos, propriedades e condições em uma única expressão. O exemplo a seguir demonstra como esse recurso funciona.

Exemplo de sintaxe

switch (input)
{
    case int i when i > 0:
        Console.WriteLine("Positive integer");
        break;
    case string s:
        Console.WriteLine($"It's a string: {s}");
        break;
    default:
        Console.WriteLine("Unknown type");
        break;
}

Este código utiliza padrões de tipo, operadores relacionais e um padrão de constante nula para lidar com múltiplos casos de forma concisa. Essa técnica melhora significativamente a legibilidade do código, com uma sintaxe mais concisa e suporte a lógicas mais complexas.

Por que combinar o Switch Pattern Matching com o IronPDF?

C# Switch Pattern Matching (Como Funciona para Desenvolvedores): Figura 1 - Página inicial do IronPDF

IronPDF é um poderoso componente .NET para gerar e manipular PDFs a partir de HTML, imagens ou texto bruto. Muitos casos de uso no mundo real envolvem o processamento de diferentes padrões de entrada: alguns documentos podem ter origem em URLs, outros em strings HTML e outros em uploads de arquivos.

Em vez de testar expressões com condições if complicadas, o casamento de padrões com switch permite que você dê suporte à lógica baseada em padrões de forma eficiente. Ele permite definir como seu aplicativo responde a diferentes tipos de objetos, constantes específicas ou até mesmo expressões booleanas, usando a própria expressão de entrada para direcionar o fluxo de trabalho.

Casos de uso comuns no IronPDF com correspondência de padrões

No exemplo anterior, vimos como é a sintaxe básica, mas agora vamos vê-la em ação. Os exemplos de código a seguir são algumas tarefas reais de PDF que se beneficiam da combinação do IronPDF com a correspondência de padrões em C#.

1. Lidar com múltiplos formatos de entrada usando padrões de tipo e propriedade

Suponhamos que seu método aceite vários formatos de entrada: HTML, um Uri ou um arquivo .html local. Usando padrões de tipo, padrões de propriedade e padrões nulos, você pode distinguir esses casos sem esforço.

using System;
using System.IO;
using IronPdf;
class Program
{
    static void Main()
    {
        object input = new Uri("https://example.com"); // Try changing this to: "<html><body>Hello</body></html>" or new FileInfo("sample.html")
        var renderer = new ChromePdfRenderer();
        PdfDocument pdfDoc = input switch
        {
            string html when html.StartsWith("<html>") =>
                renderer.RenderHtmlAsPdf(html),
            Uri url =>
                renderer.RenderUrlAsPdf(url.ToString()),
            FileInfo { Extension: ".html" } file =>
                renderer.RenderHtmlAsPdf(File.ReadAllText(file.FullName)),
            null => throw new ArgumentNullException("Input was null."),
            _ => throw new ArgumentException("Unsupported input type for PDF conversion.")
        };
        pdfDoc.SaveAs("example-input-types.pdf");
        Console.WriteLine("PDF created: example-input-types.pdf");
    }
}

Aqui, o padrão de propriedade (FileInfo { Extension: ".html" }) e o padrão de constante nula (case null) tornam a lógica mais expressiva e robusta.

2. Formate PDFs dinamicamente com padrões posicionais e de declaração.

Suponha que você esteja usando um registro PdfRequest que inclui uma string de formatação. Você pode aplicar padrões posicionais, padrões de declaração e constantes de string para personalizar a formatação de PDFs.

using System;
using IronPdf;
public record PdfRequest(string Title, string Content, string Format);
class Program
{
    static void Main()
    {
        PdfRequest request = new("My Report", "<h1>Monthly Report</h1><p>Generated by IronPDF.</p>", "A4");
        var renderer = new ChromePdfRenderer();
        // Use fully qualified enum to avoid IronWord conflict
        renderer.RenderingOptions = request switch
        {
            PdfRequest { Format: "A4" } => new IronPdf.ChromePdfRenderOptions
            {
                PaperSize = IronPdf.Rendering.PdfPaperSize.A4
            },
            PdfRequest { Format: "Letter" } => new IronPdf.ChromePdfRenderOptions
            {
                PaperSize = IronPdf.Rendering.PdfPaperSize.Letter
            },
            _ => new IronPdf.ChromePdfRenderOptions
            {
                PaperSize = IronPdf.Rendering.PdfPaperSize.Legal // Fallback
            }
        };
        var pdf = renderer.RenderHtmlAsPdf(request.Content);
        pdf.SaveAs("example-formatted.pdf");
        Console.WriteLine("PDF created: example-formatted.pdf");
    }
}

Este exemplo demonstra como a expressão corresponde à propriedade correspondente no registro, seguindo padrões lógicos baseados em valores esperados.

Tamanhos de saída

C# Switch Pattern Matching (Como Funciona para Desenvolvedores): Figura 2 - Diferença de tamanho nas saídas de PDF

3. PDFs baseados em funções usando padrões Var e Not

Use padrões var em vez de padrões not para gerenciar funções de usuário, evitando estados nulos ou inesperados.

using System;
using IronPdf;
public abstract record UserRole;
public record Admin(string Email) : UserRole;
public record Viewer(string Email) : UserRole;
public record Guest() : UserRole;
class Program
{
    static void Main()
    {
        UserRole currentUser = new Admin("admin@example.com"); // Try changing to Viewer or Guest
        var pdf = currentUser switch
        {
            Admin { Email: var email } =>
                new ChromePdfRenderer().RenderHtmlAsPdf($"<h1>Admin Dashboard</h1><p>Email: {email}</p>"),
            Viewer =>
                new ChromePdfRenderer().RenderHtmlAsPdf("<h1>Viewer Summary</h1><p>Access limited.</p>"),
            Guest =>
                new ChromePdfRenderer().RenderHtmlAsPdf("<h1>Guest Mode</h1><p>Please sign in.</p>"),
            not null =>
                throw new UnauthorizedAccessException("Unknown role type."),
            null =>
                throw new ArgumentNullException("Role cannot be null.")
        };
        pdf.SaveAs("example-role.pdf");
        Console.WriteLine("PDF created: example-role.pdf");
    }
}

Essa estrutura melhora a segurança e a legibilidade do código, ao mesmo tempo que aproveita declarações de variáveis ​​temporárias, como var email. A imagem a seguir mostra os diferentes documentos PDF criados com base em diferentes valores de entrada.

C# Switch Pattern Matching (Como Funciona para Desenvolvedores): Figura 3 - Saída baseada em função

4. Correspondência de padrões relacionais com base em dados do usuário

Precisa gerar PDFs diferentes dependendo do nível de acesso do usuário? Tente usar dois padrões relacionais para verificar se a entrada está dentro de um determinado intervalo.

using System;
using IronPdf;
class Program
{
    static void Main()
    {
        int userScore = 85; // Try other values: 45, 70, 101
        string message = userScore switch
        {
            < 60 => "Needs Improvement",
            >= 60 and < 80 => "Satisfactory",
            >= 80 and <= 100 => "Excellent",
            _ => "Invalid score"
        };
        var html = $"<h1>Score Report</h1><p>Score: {userScore}</p><p>Result: {message}</p>";
        var pdf = new ChromePdfRenderer().RenderHtmlAsPdf(html);
        pdf.SaveAs("example-score.pdf");
        Console.WriteLine("PDF created: example-score.pdf");
    }
}

Os operadores relacionais e as expressões booleanas mantêm o código conciso e expressivo.

Saída

C# Switch Pattern Matching (Como Funciona para Desenvolvedores): Figura 4 - Saída baseada em pontuação

Dicas para implementar esse padrão em seus projetos

C# Switch Pattern Matching (Como Funciona para Desenvolvedores): Figura 5 - Guia rápido de correspondência de padrões em C#

  • Utilize tipos de registro para objetos de dados limpos e imutáveis.
  • Prefira expressões switch em vez de árvores if-else para uma lógica mais limpa.
  • Use padrões de não e descarte (_) para ignorar correspondências irrelevantes.
  • Adicione casos padrão para detectar entradas desconhecidas antecipadamente.
  • Divida os casos complexos em métodos auxiliares para facilitar a leitura.

Benefícios no mundo real

  • Código mais limpo: Sem blocos if-else ou switch-case profundamente aninhados
  • Testes mais fáceis: casos de padrões isolados simplificam os testes unitários
  • Flexibilidade: Amplie facilmente a lógica ao adicionar novos tipos de entrada.
  • Melhor Separação de Responsabilidades: Concentre a lógica apenas na transformação de entrada/saída.

Conclusão: Modernize a lógica dos seus PDFs

A correspondência de padrões com o switch é mais do que apenas uma melhoria sintática; é um paradigma poderoso para escrever código mais seguro e expressivo. Combinando isso com os recursos flexíveis de renderização do IronPDF, você pode criar fluxos de trabalho de geração de documentos mais inteligentes e escaláveis ​​com o mínimo de código.

Seja para criar um gerador de relatórios, um visualizador de documentos ou um sistema de modelos dinâmicos, experimente adicionar a correspondência de padrões à sua implementação do IronPDF . Você perceberá rapidamente os benefícios em termos de clareza, controle e facilidade de manutenção.

Quer experimentar o IronPDF você mesmo?

Baixe a versão de avaliação gratuita para experimentar os poderosos recursos do IronPDF antes de adquirir uma licença.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.