IRONSOFTWAREHOME
MISES À JOUR POUR LES DÉVELOPPEURS

C# switch pattern matching : comment ça fonctionne pour les développeurs

Jacob Mellor, Directeur technique @ Team Iron
Jacob Mellor
Updated: 23 avril 2026

Travailler avec des fichiers PDF en C# implique souvent de gérer différents types de documents, actions ou sources de données. Traditionnellement, les développeurs peuvent s'appuyer sur de longues chaînes if-else ou des déclarations switch imbriquées pour gérer diverses valeurs d'entrée et sorties. Mais avec les fonctionnalités modernes de C# comme le switch pattern matching, votre code peut devenir bien plus élégant, lisible et maintenable.

Combiné avec une bibliothèque PDF puissante comme IronPDF, le switch pattern matching vous permet de construire une logique plus intelligente et plus propre pour le traitement des documents. Dans cet article, nous allons explorer comment utiliser les fonctionnalités avancées de pattern matching de C# — telles que les patterns de type, les patterns de propriété et les patterns relationnels — en parallèle avec IronPDF pour simplifier vos flux de travail de génération de PDF.

What is Switch Pattern Matching in C#?

Le switch pattern matching est une fonctionnalité introduite dans C# 7 et continuellement améliorée dans les versions ultérieures. Contrairement aux instructions switch traditionnelles qui ne correspondent qu'à des valeurs constantes, le pattern matching vous permet d'évaluer des types, des propriétés et des conditions au sein d'une seule expression. L'exemple suivant montre comment cette fonctionnalité fonctionne.

Syntaxe de l'Exemple

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

Ce code utilise des patterns de type, des opérateurs relationnels et un pattern de constante null pour gérer plusieurs cas de manière concise. Cette technique améliore considérablement la lisibilité du code avec une syntaxe plus concise et prend en charge une logique plus complexe.

Pourquoi Combiner le Switch Pattern Matching avec IronPDF ?

Correspondance de modèles de switch C# (Comment cela fonctionne pour les développeurs) : Figure 1 - Page d'accueil d'IronPDF

IronPDF est un composant .NET puissant pour générer et manipuler des PDFs à partir de HTML, d'images ou de texte brut. De nombreux cas d'utilisation réels impliquent de traiter différents modèles d'entrée : certains documents peuvent provenir d'URL, d'autres de chaînes HTML, et d'autres de téléchargements de fichiers.

Plutôt que de tester des expressions avec des conditions if maladroites, le switch pattern matching vous permet de prendre en charge la logique basée sur les modèles efficacement. Il vous permet de définir comment votre application réagit à différents types d'objets, des constantes spécifiées ou même des expressions booléennes — en utilisant l'expression d'entrée elle-même pour piloter le flux de travail.

Cas d'Utilisation Courants dans IronPDF avec Pattern Matching

Dans l'exemple précédent, nous avons regardé à quoi ressemble la syntaxe de base, mais regardons maintenant à l'œuvre. Les exemples de code suivants sont des tâches PDF réelles qui bénéficient de la combinaison d'IronPDF avec le pattern matching de C#.

1. Gérer Plusieurs Formats d'Entrée avec des Patterns de Type et de Propriété

Disons que votre méthode accepte divers formats d'entrée : HTML, un URI ou un fichier .html local. En utilisant des patterns de type, de propriété et des patterns null, vous pouvez distinguer ces cas sans effort.

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

Ici, le pattern de propriété (FileInfo { Extension: ".html" }) et le pattern de constante null (case null) rendent la logique plus expressive et robuste.

2. Formater Dynamiquement les PDFs avec des Patterns Positionnels et de Déclaration

Supposons que vous utilisiez un enregistrement PdfRequest qui inclut une chaîne de format. Vous pouvez appliquer des patterns positionnels, des patterns de déclaration et des constantes de chaîne pour personnaliser le formatage des 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");
    }
}

Cet usage démontre comment l'expression correspond à la propriété correspondante dans l'enregistrement, suivant des modèles logiques basés sur des valeurs attendues.

Tailles de Sortie

Correspondance de modèles de switch C# (Comment cela fonctionne pour les développeurs) : Figure 2 - Différence de taille dans les sorties PDF

3. PDFs Basés sur les Rôles Utilisant des Patterns Var et Not

Utilisez des patterns var et not pour gérer les rôles des utilisateurs tout en évitant les états nuls ou inattendus.

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

Cette structure améliore la sécurité et la lisibilité du code, tout en profitant des déclarations de variables temporaires comme var email. L'image suivante montre les différents documents PDF créés en fonction des différentes valeurs d'entrée.

Correspondance de modèles de switch C# (Comment cela fonctionne pour les développeurs) : Figure 3 - Sortie basée sur les rôles

4. Pattern Matching Relationnel Basé sur les Données Utilisateur

Besoin de générer différents PDFs selon les niveaux d'utilisateur ? Essayez d'utiliser deux patterns relationnels pour vérifier si l'entrée se situe dans une certaine fourchette.

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

Les opérateurs relationnels et les expressions booléennes gardent le code concis et expressif.

Sortie

Correspondance de modèles de switch C# (Comment cela fonctionne pour les développeurs) : Figure 4 - Sortie basée sur le score

Conseils pour Implémenter Ce Modèle Dans Vos Projets

Correspondance de modèles de switch C# (Comment cela fonctionne pour les développeurs) : Figure 5 - Fiche de référence rapide du correspondance de modèles C#

  • Utilisez des types enregistrement pour des objets de données propres et immuables.
  • Privilégiez les expressions switch sur les arbres if-else pour une logique plus propre.
  • Utilisez les patterns not et les patterns de suppression (_) pour ignorer les correspondances non pertinentes.
  • Ajoutez des cas par défaut pour intercepter les entrées inconnues tôt.
  • Séparez les cas complexes dans des méthodes auxiliaires pour plus de lisibilité.

Avis Réels

  • Code plus propre : fini les blocs if-else ou switch-case profondément imbriqués
  • Tests simplifiés : les cas de modèles isolés simplifient les tests unitaires
  • Flexibilité : Extension facile de la logique lors de l'ajout de nouveaux types d'entrée
  • Meilleure séparation des préoccupations : concentrer la logique uniquement sur la transformation des entrées/sorties

Conclusion : Modernisez Votre Logique PDF

Le switch pattern matching est plus qu'une simple amélioration syntaxique, c'est un paradigme puissant pour écrire un code plus sûr et plus expressif. Combiné avec les capacités de rendu flexibles d'IronPDF, vous pouvez créer des pipelines de génération de documents plus intelligents et plus évolutifs avec un code minimal.

Que vous construisiez un générateur de rapports, un visualiseur de documents ou un système de modèles dynamiques, essayez d'ajouter le pattern matching à votre implémentation IronPDF. Vous verrez rapidement les avantages en termes de clarté, de contrôle et de maintenabilité.

Voulez-vous Essayer IronPDF Vous-même ?

Téléchargez l'essai gratuit pour essayer par vous-même les fonctionnalités puissantes d'IronPDF avant d'acheter une licence.

Jacob Mellor, Directeur technique @ Team Iron
Directeur technique

Jacob Mellor est directeur de la technologie chez Iron Software et un ingénieur visionnaire pionnier de la technologie C# PDF. En tant que développeur à l'origine de la base de code centrale d'Iron Software, il a façonné l'architecture des produits de l'entreprise depuis sa création, la transformant aux côtés du PDG Cameron Rimington en une entreprise de plus de 50 personnes au service de la NASA, de Tesla et d'agences gouvernementales mondiales.

...
Lire la suite

Articles connexes

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise