Przejdź do treści stopki
POMOC .NET

Instrukcja switch w języku C# (jak działa dla programistów)

W rozległym świecie języków programowania poprawa czytelności i wydajności kodu ma kluczowe znaczenie, a język C# wyróżnia się dzięki różnorodnym konstrukcjom wspierającym pracę programisty. Wśród potężnych narzędzi tego języka szczególne miejsce zajmuje instrukcja switch w C#. Niniejszy kompleksowy przewodnik zgłębia jej zawiłości w języku C#, analizuje wielorakie zastosowania i przedstawia jej praktyczne użycie w scenariuszu z życia wziętym przy użyciu IronPDF, wszechstronnej biblioteki C# do generowania plików PDF. Celem tego opracowania jest nie tylko odkrycie mechanizmów tej konstrukcji, ale także podkreślenie jej znaczenia w szerszym kontekście tworzenia oprogramowania w C#.

1. Zrozumienie instrukcji switch

Instrukcja switch w C# to instrukcja sterująca przepływem, która pozwala programistom pisać czystszy i bardziej zwięzły kod podczas obsługi wielu warunków. Jest szczególnie przydatna, gdy trzeba wykonywać różne działania w zależności od wartości konkretnej zmiennej.

Sprawia to, że jest doskonałą alternatywą dla instrukcji if-else, gdy słowo kluczowe lub zmienna stanowi centrum logiki, ponieważ zwiększa czytelność kodu i ułatwia jego utrzymanie. W przeciwieństwie do instrukcji if-else, która może prowadzić do zagnieżdżonych struktur i skomplikowania kodu, instrukcja switch oferuje bardziej zorganizowane podejście. Jest szczególnie przydatna podczas pracy ze zmienną, która musi wyzwalać różne działania na podstawie swojej wartości.

Przyjrzyjmy się bliżej roli instrukcji break w kontekście instrukcji switch. W C# instrukcja break służy do zakończenia wykonywania bloku kodu powiązanego z konkretnym przypadkiem w bloku switch. Gdy dany przypadek zostanie dopasowany i wykonany, instrukcja break zapobiega ocenianiu kolejnych przypadków. Jeśli zachowanie fall-through jest pożądane, należy użyć instrukcji goto zamiast break.

Poniżej przedstawiono podstawową strukturę instrukcji switch w 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

Przyjrzyjmy się teraz różnym typom instrukcji switch i ich zastosowaniom.

2. Typy instrukcji switch i ich zastosowania

2.1. Prosta instrukcja switch

Jest to najprostsza forma instrukcji switch. Porównuje zmienną z wartościami stałymi i wykonuje blok kodu powiązany z pierwszą pasującą wartością lub przypadkiem. Jeśli nie zostanie znalezione żadne dopasowanie, wykonywany jest domyślny blok kodu.

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. Instrukcja switch ze wzorcami (C# 7.0 i nowsze)

C# 7.0 wprowadził dopasowywanie wzorców w case, co umożliwiło bardziej ekspresyjną i elastyczną instrukcję switch. Wyrażenie dopasowujące wzorzec może zawierać wzorce typów, wzorce właściwości i wiele innych, czyniąc kod jeszcze bardziej czytelnym.

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. Wyrażenie switch (C# 8.0 i nowsze)

W C# 8.0 wprowadzono nową, bardziej zwięzłą formę instrukcji switch — wyrażenia switch. Można ich używać w miejscach, gdzie wymagane jest stałe wyrażenie wartości, co skraca i upraszcza kod.

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

Mając solidną wiedzę na temat instrukcji switch, można teraz zobaczyć, jak zastosować je w scenariuszu z życia wziętym przy użyciu IronPDF w C#.

3. Przedstawiamy IronPDF w C

IronPDF to popularna biblioteka C# umożliwiająca programistom łatwe generowanie i manipulowanie dokumentami PDF. Upraszcza zadania związane z tworzeniem, edytowaniem i renderowaniem plików PDF. Zobaczmy, jak można wykorzystać instrukcję switch w IronPDF, aby poprawić funkcjonalność i organizację kodu.

3.1. Korzystanie z instrukcji switch w IronPDF

Załóżmy, że pracujesz nad systemem zarządzania dokumentami, w którym musisz generować różne typy plików PDF w zależności od przeznaczenia treści dokumentu. Oto jak można wykorzystać instrukcję switch w 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

Ten program napisany w języku C# wykorzystuje bibliotekę IronPDF do dynamicznego generowania plików PDF na podstawie danych wprowadzonych przez użytkownika. Użytkownik jest proszony o wprowadzenie litery "I" dla faktury (Invoice) lub "R" dla raportu (Report). W zależności od danych wejściowych program wykorzystuje klasę ChromePdfRenderer do renderowania odpowiedniego pliku HTML ("report.html" dla raportu lub "invoice.html" dla faktury) do formatu PDF. Wygenerowany plik PDF jest następnie zapisywany pod odpowiednią nazwą: "Report.pdf" dla raportu i "Invoice.pdf" dla faktury. Takie podejście zapewnia elastyczny i interaktywny sposób generowania określonych typów dokumentów PDF za pośrednictwem interfejsu konsoli.

3.2. Przykład raportu

W poniższym przykładzie utworzymy raport na podstawie danych wprowadzonych przez użytkownika.

Dane wejściowe z konsoli:

C# Switch Statement (How It Works For Developers) Figure 1 - User input in Console (Report)

Wynik w formacie PDF:

C# Switch Statement (How It Works For Developers) Figure 2 - Output PDF Report

3.3. Przykład faktury

W tym przykładzie instrukcji case utworzymy fakturę na podstawie danych wprowadzonych przez użytkownika oraz instrukcji switch.

Dane wejściowe z konsoli:

C# Switch Statement (How It Works For Developers) Figure 3 - User input in Console (Invoice)

Wynik w formacie PDF:

C# Switch Statement (How It Works For Developers) Figure 4 - Output PDF (Invoice)

4. Podsumowanie

Podsumowując, instrukcja switch w języku C# wyróżnia się jako solidne narzędzie kontroli przepływu, które oferuje programistom bardziej uporządkowane i zwięzłe podejście do obsługi wielu warunków w porównaniu z tradycyjnymi instrukcjami if-else. Dzięki kategoryzacji wykonywania kodu na podstawie wartości zmiennych instrukcje switch mogą ułatwić pisanie kodu poprzez poprawę czytelności i łatwości utrzymania.

Wszechstronność instrukcji switch jest ilustrowana poprzez różne typy, w tym proste instrukcje switch, bloki switch oparte na wzorcach oraz wyrażenia switch, z których każdy jest dostosowany do konkretnych scenariuszy kodowania.

Integracja biblioteki IronPDF stanowi przykład praktycznego zastosowania instrukcji switch w generowaniu dynamicznych dokumentów PDF na podstawie danych wprowadzonych przez użytkownika i pokazuje, w jaki sposób tę funkcję można wykorzystać w rzeczywistych scenariuszach w celu zwiększenia elastyczności i wydajności kodowania w języku C#.

Aby poznać możliwości IronPDF i dowiedzieć się więcej o konwersji HTML do PDF, odwiedź samouczki IronPDF.

Często Zadawane Pytania

W jaki sposób instrukcja switch poprawia czytelność kodu w języku C#?

Instrukcja switch poprawia czytelność kodu w języku C#, zapewniając uporządkowany sposób obsługi wielu warunków, co zmniejsza złożoność zagnieżdżonych instrukcji if-else. Pozwala to programistom na jasne wyodrębnienie różnych ścieżek wykonywania kodu w oparciu o wartości zmiennych.

Jakie jest praktyczne zastosowanie instrukcji switch w generowaniu plików PDF?

Instrukcje switch mogą być wykorzystywane podczas generowania plików PDF do dynamicznego tworzenia różnych typów plików PDF w oparciu o dane wprowadzone przez użytkownika. Na przykład użycie instrukcji switch w połączeniu z IronPDF pozwala zdecydować, czy wygenerować raport, czy fakturę w formacie PDF, usprawniając w ten sposób zadania związane z zarządzaniem dokumentami.

W jaki sposób dopasowywanie wzorców może usprawnić instrukcje switch w języku C#?

Dopasowywanie wzorców, wprowadzone w C# 7.0, ulepsza instrukcje switch, umożliwiając tworzenie bardziej wyrazistego i elastycznego kodu. Obejmuje wzorce typów i wzorce właściwości, umożliwiając sprawdzanie złożonych warunków i poprawiając czytelność kodu w blokach switch.

Jakie ulepszenia wprowadziła wersja C# 8.0 w instrukcjach switch?

W języku C# 8.0 wprowadzono wyrażenia switch, które zapewniają bardziej zwięzłą formę instrukcji switch. To ulepszenie pozwala na tworzenie krótszej, bardziej eleganckiej logiki warunkowej, dzięki czemu kod jest łatwiejszy do odczytania i utrzymania.

Dlaczego programista mógłby wybrać instrukcję switch zamiast instrukcji if-else w języku C#?

Programista może wybrać instrukcję switch zamiast instrukcji if-else, aby poprawić organizację i czytelność kodu. Instrukcje switch kategoryzują wykonywanie kodu na podstawie wartości zmiennych, unikając złożoności i bałaganu związanego z zagnieżdżonymi strukturami if-else.

Czy instrukcje switch mogą być zintegrowane z bibliotekami PDF w celu zwiększenia funkcjonalności?

Tak, instrukcje switch mogą być zintegrowane z bibliotekami PDF, takimi jak IronPDF, w celu zwiększenia funkcjonalności. Umożliwiają one dynamiczne podejmowanie decyzji w procesach generowania plików PDF, takich jak wybór różnych szablonów lub typów dokumentów w oparciu o określone warunki.

Jak działa domyślny przypadek w instrukcji switch w języku C#?

Domyślny przypadek w instrukcji switch w języku C# jest wykonywany, gdy żaden z określonych przypadków nie pasuje do wartości zmiennej. Działa on jako mechanizm awaryjny, zapewniając wykonanie kodu nawet wtedy, gdy żaden inny przypadek nie jest spełniony.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczą...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwon do mnie