IRONSOFTWAREHOME
ACTUALIZACIONES PARA DESARROLLADORES

Pattern matching con switch en C# | Guía completa

Jacob Mellor, Director de Tecnología @ Team Iron
Jacob Mellor
Updated: 23 de abril de 2026

Trabajar con archivos PDF en C# a menudo implica manejar diferentes tipos de documentos, acciones o fuentes de datos. Tradicionalmente, los desarrolladores podrían depender de largas cadenas if-else o declaraciones switch anidadas para gestionar varios valores de entrada y tipos o decisiones de salida. Pero con características modernas de C# como switch pattern matching, tu código puede volverse mucho más elegante, legible y mantenible.

Cuando se combina con una poderosa biblioteca PDF como IronPDF, el switch pattern matching te permite construir lógica más inteligente y limpia para el procesamiento de documentos. En este artículo, exploraremos cómo usar las características avanzadas de pattern matching de C#—como patrones de tipo, patrones de propiedad y patrones relacionales—junto con IronPDF para optimizar tus flujos de trabajo de generación de PDF.

What is Switch Pattern Matching in C#?

Switch pattern matching es una característica introducida en C# 7 y continuamente mejorada en versiones posteriores. A diferencia de las declaraciones switch tradicionales que solo coinciden con valores constantes, el pattern matching te permite evaluar tipos, propiedades y condiciones dentro de una sola expresión. El siguiente ejemplo muestra cómo funciona esta característica.

Ejemplo de sintaxis

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 patrones de tipo, operadores relacionales y un patrón constante nulo para manejar múltiples casos de manera concisa. Esta técnica mejora significativamente la legibilidad del código con una sintaxis más concisa y soporta lógica más compleja.

¿Por qué combinar la concordancia de patrones de conmutación con IronPDF?

C# Switch Pattern Matching (Cómo funciona para desarrolladores): Figura 1 - página principal de IronPDF

IronPDF es un poderoso componente .NET para generar y manipular PDFs a partir de HTML, imágenes o texto sin formato. Muchos casos de uso del mundo real implican procesar diferentes patrones de entrada: algunos documentos podrían originarse en URLs, otros en cadenas HTML, y otros en cargas de archivos.

En lugar de probar expresiones con torpes condiciones if, switch pattern matching te permite soportar lógica basada en patrones de manera eficiente. Te permite definir cómo responde tu aplicación a diferentes tipos de objetos, constantes especificadas o incluso expresiones booleanas, utilizando la expresión de entrada misma para impulsar el flujo de trabajo.

Casos de uso comunes en IronPDF con concordancia de patrones

En el ejemplo anterior vimos cómo luce la sintaxis básica, pero ahora veamos cómo funciona en acción. Los siguientes ejemplos de código son algunas tareas del mundo real con PDF que se benefician al combinar IronPDF con el pattern matching de C#.

1. Manejo de múltiples formatos de entrada con patrones de tipos y propiedades

Supongamos que tu método acepta varios formatos de entrada: HTML, un Uri o un archivo .html local. Usando patrones de tipo, patrones de propiedad y patrones nulos, puedes distinguir estos casos sin esfuerzo.

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");
    }
}

Aquí, el patrón de propiedad (FileInfo { Extension: ".html" }) y el patrón constante nulo (case null) hacen que la lógica sea más expresiva y robusta.

2. Formatear PDF dinámicamente con patrones de posición y declaración

Supongamos que estás utilizando un registro PdfRequest que incluye una cadena de formato. Puedes aplicar patrones posicionales, patrones de declaración y constantes de cadena para personalizar el formato de PDF.

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 uso demuestra cómo la expresión coincide con la propiedad correspondiente dentro del registro, siguiendo patrones lógicos basados en valores esperados.

Tamaños de salida

C# Switch Pattern Matching (Cómo funciona para desarrolladores): Figura 2 - Diferencia de tamaño en las salidas PDF

3. PDFs basados en roles usando patrones Var y Not

Usa patrones var y not para manejar roles de usuario mientras evitas estados nulos o 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");
    }
}

Esta estructura mejora la seguridad y la legibilidad del código, mientras aprovecha las declaraciones de variables temporales como var email. La siguiente imagen muestra los diferentes documentos PDF creados basados en diferentes valores de entrada.

C# Switch Pattern Matching (Cómo funciona para desarrolladores): Figura 3 - Salida basada en roles

4. Comparación de patrones relacionales basada en datos de usuario

¿Necesitas generar diferentes PDFs dependiendo de los niveles de usuario? Intenta usar dos patrones relacionales para probar si la entrada cae dentro de un rango determinado.

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");
    }
}

Los operadores relacionales y las expresiones booleanas mantienen el código conciso y expresivo.

Resultado

C# Switch Pattern Matching (Cómo funciona para desarrolladores): Figura 4 - Salida basada en puntuaciones

Consejos para implementar este patrón en tus proyectos

C# Switch Pattern Matching (Cómo funciona para desarrolladores): Figura 5 - Hoja de referencia rápida para Pattern Matching en C#

  • Usa tipos de registro para objetos de datos limpios e inmutables.
  • Prefiere expresiones switch sobre árboles if-else para una lógica más limpia.
  • Usa not patterns y discard patterns (_) para ignorar coincidencias irrelevantes.
  • Añade casos por defecto para capturar entradas desconocidas desde el principio.
  • Divide casos complejos en métodos auxiliares para mejorar la legibilidad.

Beneficios reales

  • Código más limpio: no más bloques if-else o switch-case profundamente anidados
  • Pruebas más fáciles: los casos de patrones aislados simplifican las pruebas unitarias
  • Flexibilidad: amplíe fácilmente la lógica al agregar nuevos tipos de entrada
  • Mejor separación de preocupaciones: centrar la lógica únicamente en la transformación de entrada/salida

Conclusión: Modernice su lógica PDF

Switch pattern matching es más que una mejora sintáctica, es un poderoso paradigma para escribir código más seguro y expresivo. Combinado con las capacidades flexibles de renderización de IronPDF, puedes crear canales de generación de documentos más inteligentes y escalables con un mínimo de código.

Ya sea que estés construyendo un generador de informes, un visor de documentos o un sistema de plantillas dinámicas, intenta agregar pattern matching a tu implementación de IronPDF. Pronto verás los beneficios en claridad, control y mantenibilidad.

¿Quiere probar IronPDF usted mismo?

Descarga la prueba gratuita para probar las potentes características de IronPDF por ti mismo antes de comprar una licencia.

Jacob Mellor, Director de Tecnología @ Team Iron
Director de Tecnología

Jacob Mellor es Director de Tecnología de Iron Software y un ingeniero visionario pionero en la tecnología C# PDF. Como desarrollador original de la base de código principal de Iron Software, ha dado forma a la arquitectura de productos de la empresa desde su creación, transformándola, junto con el director ejecutivo Cameron Rimington, en una empresa de más de 50 personas que presta servicios a la NASA, Tesla y organismos gubernamentales de todo el mundo.

...
Leer más

Artículos Relacionados

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Reserve su Demostración en Vivo gratuita
Booking Badge

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta