Passer au contenu du pied de page
.NET AIDE

Instruction switch C# (Comment ça fonctionne pour les développeurs)

Dans le vaste paysage des langages de programmation, améliorer la lisibilité et l'efficacité du code est primordial, et le langage C# se dresse en tant que pilier en fournissant des constructions diverses pour répondre à vos besoins de codage. Parmi son arsenal d'outils puissants, le "C# Switch Statement" se distingue de manière proéminente. Ce guide complet explorera les subtilités nuancées de ceux-ci dans le langage C#. Nous plongerons dans ses utilisations multifacettes et mettrons en lumière son application pratique à travers un scénario réel impliquant IronPDF, une bibliothèque C# polyvalente pour la génération de PDF. Ce voyage vise non seulement à démêler ses mécanismes, mais aussi à souligner son importance dans le paysage plus large du développement C#.

1. Comprendre l'instruction Switch

L'instruction switch en C# est une instruction de contrôle de flux qui permet aux développeurs d'écrire du code plus propre et plus concis lorsqu'ils traitent plusieurs conditions. Elle est particulièrement utile lorsque vous souhaitez effectuer des actions différentes en fonction de la valeur d'une variable particulière.

Cela en fait une alternative parfaite aux instructions if-else lorsque le mot-clé/variable est le centre d'intérêt, car elle augmente la lisibilité et la capacité de maintenance du code. Contrairement à une instruction if-else, qui peut entraîner des structures imbriquées et une complexité potentielle du code, l'instruction switch offre une alternative plus organisée. Elle est particulièrement bénéfique lorsque vous travaillez avec une variable qui doit déclencher des actions distinctes en fonction de sa valeur.

Maintenant, examinons de plus près le rôle de la rupture dans le contexte d'une instruction switch. En C#, l'instruction break est utilisée pour terminer l'exécution d'un bloc de code associé à un cas particulier dans le bloc switch. Lorsqu'une correspondance ou un cas de switch correspond, et que le bloc de code correspondant à ce cas est exécuté, l'instruction break est cruciale pour empêcher que les cas suivants soient évalués. Si vous souhaitez incorporer un comportement de passage au travers dans votre instruction, vous devez utiliser l'instruction goto au lieu de break.

Voici une structure de base d'une instruction switch en C# :

switch (variable)
{
    case value1:
        // Code to be executed if variable equals value1
        break;
    case value2:
        // Code to be executed if variable equals value2
        break;
    // More cases can be added as needed
    default:
        // Default Case to be executed if none of the cases match
        break;
}
switch (variable)
{
    case value1:
        // Code to be executed if variable equals value1
        break;
    case value2:
        // Code to be executed if variable equals value2
        break;
    // More cases can be added as needed
    default:
        // Default Case to be executed if none of the cases match
        break;
}
Select Case variable
	Case value1
		' Code to be executed if variable equals value1
	Case value2
		' Code to be executed if variable equals value2
	' More cases can be added as needed
	Case Else
		' Default Case to be executed if none of the cases match
End Select
$vbLabelText   $csharpLabel

Maintenant, explorons les différents types d'instructions switch et leurs cas d'utilisation.

2. Types d'instructions Switch et leurs utilisations

2.1. Instruction Switch simple

C'est la forme la plus basique d'une instruction switch. Elle compare la variable avec des valeurs constantes et exécute le bloc de code associé à la première valeur ou cas correspondant. Si aucune correspondance n'est trouvée, le bloc de code par défaut est exécuté.

int day = 3;
switch (day)
{
    case 1:
        Console.WriteLine("Monday");
        break;
    case 2:
        Console.WriteLine("Tuesday");
        break;
    // More cases...
    default:
        Console.WriteLine("Invalid day");
        break;
}
int day = 3;
switch (day)
{
    case 1:
        Console.WriteLine("Monday");
        break;
    case 2:
        Console.WriteLine("Tuesday");
        break;
    // More cases...
    default:
        Console.WriteLine("Invalid day");
        break;
}
Dim day As Integer = 3
Select Case day
	Case 1
		Console.WriteLine("Monday")
	Case 2
		Console.WriteLine("Tuesday")
	' More cases...
	Case Else
		Console.WriteLine("Invalid day")
End Select
$vbLabelText   $csharpLabel

2.2. Instruction Switch avec motifs (C# 7.0 et versions ultérieures)

C# 7.0 a introduit la correspondance de motifs de cas qui permettait une instruction switch plus expressive et flexible. Une expression de correspondance de motif peut inclure des motifs de type, des motifs de propriété, et plus encore, rendant le code encore plus lisible.

object obj = "Hello";
switch (obj)
{
    case string s:
        Console.WriteLine($"String of length {s.Length}");
        break;
    case int i:
        Console.WriteLine($"Integer: {i}");
        break;
    // More cases...
    default:
        Console.WriteLine("Other type");
        break;
}
object obj = "Hello";
switch (obj)
{
    case string s:
        Console.WriteLine($"String of length {s.Length}");
        break;
    case int i:
        Console.WriteLine($"Integer: {i}");
        break;
    // More cases...
    default:
        Console.WriteLine("Other type");
        break;
}
Dim obj As Object = "Hello"
Select Case obj
'INSTANT VB TODO TASK: The following 'case' pattern variable is not converted by Instant VB:
'ORIGINAL LINE: case string s:
	Case String s
		Console.WriteLine($"String of length {s.Length}")
'INSTANT VB TODO TASK: The following 'case' pattern variable is not converted by Instant VB:
'ORIGINAL LINE: case int i:
	Case Integer i
		Console.WriteLine($"Integer: {i}")
	' More cases...
	Case Else
		Console.WriteLine("Other type")
End Select
$vbLabelText   $csharpLabel

2.3. Expression Switch (C# 8.0 et versions ultérieures)

En C# 8.0, une nouvelle forme plus concise de l'instruction switch a été introduite sous le nom d'expressions switch. Elles peuvent être utilisées dans des endroits où une expression constante d'une valeur est nécessaire, rendant le code plus court et plus élégant.

int day = 2;
string result = day switch
{
    1 => "Monday",
    2 => "Tuesday",
    // More cases...
    _ => "Invalid day"
};
Console.WriteLine(result);
int day = 2;
string result = day switch
{
    1 => "Monday",
    2 => "Tuesday",
    // More cases...
    _ => "Invalid day"
};
Console.WriteLine(result);
Dim day As Integer = 2
Dim tempVar As String
Select Case day
	Case 1
		tempVar = "Monday"
	Case 2
		tempVar = "Tuesday"
	' More cases...
	Case Else
		tempVar = "Invalid day"
End Select
Dim result As String = tempVar
Console.WriteLine(result)
$vbLabelText   $csharpLabel

Maintenant que nous avons une compréhension solide des instructions switch, voyons comment elles peuvent être appliquées dans un scénario réel utilisant IronPDF en C#.

3. Introduction d'IronPDF en C

IronPDF est une bibliothèque C# populaire qui permet aux développeurs de générer et de manipuler des documents PDF avec facilité. Elle simplifie les tâches liées à la création, à la modification et au rendu de fichiers PDF. Explorons comment l'instruction switch peut être utilisée avec IronPDF pour améliorer la fonctionnalité et l'organisation de votre code.

3.1. Utilisation de l'instruction Switch avec IronPDF

Supposons que vous travaillez sur un système de gestion de documents où vous devez générer différents types de PDF en fonction du cas d'utilisation du contenu du document. Voici comment vous pouvez tirer parti de l'instruction switch avec IronPDF :

using IronPdf;
using System;

class GeneratePDF
{
    public static void Main(String[] args)
    {
        var renderer = new ChromePdfRenderer();
        string userInput;

        Console.WriteLine("Enter your input:");
        Console.WriteLine("Enter 'I' for Invoice");
        Console.WriteLine("Enter 'R' for Report");
        userInput = Console.ReadLine();

        switch (userInput)
        {
            case "R":
                // Render and save a PDF for a report
                var reportPdf = renderer.RenderHtmlFileAsPdf("report.html");
                reportPdf.SaveAs("Report.pdf");
                break;
            case "I":
                // Render and save a PDF for an invoice
                var invoicePdf = renderer.RenderHtmlFileAsPdf("invoice.html");
                invoicePdf.SaveAs("Invoice.pdf");
                break;
            default:
                Console.WriteLine("Invalid input");
                break;
        }
    }
}
using IronPdf;
using System;

class GeneratePDF
{
    public static void Main(String[] args)
    {
        var renderer = new ChromePdfRenderer();
        string userInput;

        Console.WriteLine("Enter your input:");
        Console.WriteLine("Enter 'I' for Invoice");
        Console.WriteLine("Enter 'R' for Report");
        userInput = Console.ReadLine();

        switch (userInput)
        {
            case "R":
                // Render and save a PDF for a report
                var reportPdf = renderer.RenderHtmlFileAsPdf("report.html");
                reportPdf.SaveAs("Report.pdf");
                break;
            case "I":
                // Render and save a PDF for an invoice
                var invoicePdf = renderer.RenderHtmlFileAsPdf("invoice.html");
                invoicePdf.SaveAs("Invoice.pdf");
                break;
            default:
                Console.WriteLine("Invalid input");
                break;
        }
    }
}
Imports IronPdf
Imports System

Friend Class GeneratePDF
	Public Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()
		Dim userInput As String

		Console.WriteLine("Enter your input:")
		Console.WriteLine("Enter 'I' for Invoice")
		Console.WriteLine("Enter 'R' for Report")
		userInput = Console.ReadLine()

		Select Case userInput
			Case "R"
				' Render and save a PDF for a report
				Dim reportPdf = renderer.RenderHtmlFileAsPdf("report.html")
				reportPdf.SaveAs("Report.pdf")
			Case "I"
				' Render and save a PDF for an invoice
				Dim invoicePdf = renderer.RenderHtmlFileAsPdf("invoice.html")
				invoicePdf.SaveAs("Invoice.pdf")
			Case Else
				Console.WriteLine("Invalid input")
		End Select
	End Sub
End Class
$vbLabelText   $csharpLabel

Ce programme C# utilise la bibliothèque IronPDF pour générer dynamiquement des fichiers PDF en fonction de l'entrée de l'utilisateur. L'utilisateur est invité à entrer soit 'I' pour Facture, soit 'R' pour Rapport. En fonction de l'entrée, le programme utilise la classe ChromePdfRenderer pour transformer le fichier HTML correspondant ("report.html" pour Rapport ou "invoice.html" pour Facture) au format PDF. Le PDF généré est ensuite enregistré avec des noms de fichiers appropriés, "Report.pdf" pour le Rapport et "Invoice.pdf" pour la Facture. Cette approche offre une manière flexible et interactive de générer des types spécifiques de documents PDF via une interface de console.

3.2. Exemple de Rapport

Dans l'exemple suivant, nous créerons un rapport en utilisant l'entrée de l'utilisateur.

Entrée Console :

C# Switch Statement (Comment ça fonctionne pour les développeurs) Figure 1 - Entrée utilisateur dans Console (Rapport)

Sortie PDF :

C# Switch Statement (Comment ça fonctionne pour les développeurs) Figure 2 - Rapport PDF en sortie

3.3. Exemple de Facture

Dans cet exemple d'instruction de cas, nous créerons une Facture en utilisant l'entrée de l'utilisateur et une instruction switch.

Entrée Console :

C# Switch Statement (Comment ça fonctionne pour les développeurs) Figure 3 - Entrée utilisateur dans Console (Facture)

Sortie PDF :

C# Switch Statement (Comment ça fonctionne pour les développeurs) Figure 4 - Sortie PDF (Facture)

4. Conclusion

En conclusion, l'instruction switch C# se distingue comme un outil de contrôle de flux robuste qui offre aux développeurs une approche plus organisée et concise pour traiter plusieurs conditions par rapport aux instructions if-else traditionnelles. En catégorisant l'exécution du code en fonction des valeurs de variables, les instructions switch peuvent contribuer à votre codage grâce à une meilleure lisibilité et une meilleure capacité de maintenance.

La polyvalence des instructions switch est démontrée à travers divers types, y compris des switches simples, des blocs switch basés sur des motifs, et des expressions switch, chacun répondant à des scénarios de codage spécifiques.

L'intégration de la bibliothèque IronPDF illustre l'application pratique des instructions switch dans la génération de documents PDF dynamiques basés sur l'entrée de l'utilisateur et montre comment cette fonctionnalité peut être exploitée dans des scénarios réels pour améliorer la flexibilité et l'efficacité de votre codage C#.

To explore the capabilities of IronPDF and learn more about HTML to PDF conversion, visit the IronPDF tutorials.

Questions Fréquemment Posées

Comment une instruction switch améliore-t-elle la lisibilité du code en C# ?

Une instruction switch améliore la lisibilité du code en C# en fournissant un moyen structuré de gérer plusieurs conditions, réduisant la complexité des instructions if-else imbriquées. Elle permet aux développeurs de délimiter clairement les différents chemins d'exécution du code en fonction des valeurs des variables.

Quelle est une application pratique des instructions switch dans la génération de PDF ?

Les instructions switch peuvent être utilisées dans la génération de PDF pour créer dynamiquement différents types de PDF en fonction des entrées utilisateur. Par exemple, l'utilisation d'une instruction switch avec IronPDF permet de choisir entre générer un rapport ou une facture PDF, simplifiant ainsi les tâches de gestion de documents.

Comment le pattern matching améliore-t-il les instructions switch en C# ?

Le pattern matching, introduit dans C# 7.0, améliore les instructions switch en permettant un code plus expressif et flexible. Il inclut des motifs de type et des motifs de propriété, permettant des vérifications de conditions complexes et améliorant la lisibilité du code au sein des blocs switch.

Quels progrès C# 8.0 a-t-il apportés aux instructions switch ?

C# 8.0 a introduit les expressions switch, qui offrent une forme plus concise des instructions switch. Cette avancée permet une logique conditionnelle plus courte et élégante, rendant le code plus facile à lire et à maintenir.

Pourquoi un développeur pourrait-il choisir une instruction switch plutôt que des instructions if-else en C# ?

Un développeur pourrait choisir une instruction switch plutôt que des instructions if-else pour améliorer l'organisation et la lisibilité du code. Les instructions switch catégorisent l'exécution du code en fonction des valeurs des variables, évitant la complexité et l'encombrement des structures if-else imbriquées.

Les instructions switch peuvent-elles être intégrées à des bibliothèques PDF pour une fonctionnalité accrue ?

Oui, les instructions switch peuvent être intégrées à des bibliothèques PDF comme IronPDF pour améliorer les fonctionnalités. Elles permettent une prise de décision dynamique dans les processus de génération de PDF, comme la sélection de différents modèles ou types de documents en fonction de conditions spécifiques.

Comment la clause par défaut fonctionne-t-elle dans une instruction switch en C# ?

La clause par défaut dans une instruction switch en C# est exécutée lorsque aucune des clauses spécifiées ne correspond à la valeur de la variable. Elle agit comme un mécanisme de secours, garantissant qu'un certain code est exécuté même si aucune autre clause n'est satisfaite.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite