Przejdź do treści stopki
POMOC .NET

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

Instrukcja switch w języku C# stanowi bardziej uproszczoną i czytelniejszą alternatywę dla wielu bloków if-else. Jest to przydatne, gdy masz zmienną, która może przyjmować jedną z kilku różnych wartości, a musisz wykonać inny kod w zależności od tej wartości. Instrukcja switch ocenia wyrażenie i wykonuje kod w oparciu o pasującą wartość, co czyni ją integralną częścią procesu podejmowania decyzji w kodzie.

Podczas gdy konstrukcje if-else są przydatne w przypadku prostych warunków lub sprawdzeń, instrukcje switch case sprawdzają się doskonale przy bardziej złożonych sprawdzaniach warunków, zwłaszcza tych opartych na pojedynczej zmiennej lub wyrażeniu dopasowującym wzorzec. Zapewniają one bardziej przejrzystą i zrozumiałą składnię w porównaniu z instrukcjami if, co ma kluczowe znaczenie zarówno dla pisania, jak i utrzymywania kodu.

Podstawy instrukcji switch

Czym jest instrukcja switch?

Instrukcja switch w języku C# to struktura kontrolna służąca do wyboru jednej z wielu ścieżek kodu do wykonania. Wybór opiera się na wartości lub wyrażeniu. Jest to wydajna alternatywa dla stosowania wielu warunków if-else, zwłaszcza w przypadku zmiennej, która może przyjmować kilka różnych wartości.

Składnia

Podstawowa składnia instrukcji switch jest prosta:

// Switch statement
switch (variable)
{
    case value1:
        // Code to execute if variable equals value1
        break;
    case value2:
        // Code to execute if variable equals value2
        break;
    // More cases as needed
    default:
        // Code to execute if variable doesn't match any case
        break;
}
// Switch statement
switch (variable)
{
    case value1:
        // Code to execute if variable equals value1
        break;
    case value2:
        // Code to execute if variable equals value2
        break;
    // More cases as needed
    default:
        // Code to execute if variable doesn't match any case
        break;
}
' Switch statement
Select Case variable
	Case value1
		' Code to execute if variable equals value1
	Case value2
		' Code to execute if variable equals value2
	' More cases as needed
	Case Else
		' Code to execute if variable doesn't match any case
End Select
$vbLabelText   $csharpLabel
  • switch (variable): Określa zmienną lub wyrażenie do oceny.
  • case value1: Są to różne wartości lub warunki, które sprawdzasz w odniesieniu do zmiennej.
  • break: Słowo kluczowe używane do opuszczenia bloku 'switch' po wykonaniu pasującego przypadku.
  • default instrukcja: Ten blok wykonuje się, jeśli żaden z określonych przypadków nie pasuje do zmiennej.

Zrozumienie instrukcji Break

Instrukcja break w switch jest kluczowa. Uniemożliwia ona "przechodzenie" do następnej instrukcji, nawet jeśli już został spełniony warunek. Każdy blok case zazwyczaj kończy się instrukcją break, aby zapewnić, że wykonana zostanie tylko instrukcja pod pasującym case'em.

Porównanie instrukcji Switch i instrukcji If-Else

Podczas gdy struktura instrukcji if-else polega na sprawdzeniu warunku i wykonaniu bloku kodu, gdy warunek jest prawdziwy, instrukcja switch porównuje pojedynczą zmienną lub wyrażenie z wieloma potencjalnymi wartościami. Dzięki temu instrukcja switch jest bardziej zwięzła i łatwiejsza do odczytania, gdy masz wiele warunków lub wzorców case do sprawdzenia.

Przykład: Wykorzystanie instrukcji Switch

int number = 3;
switch (number)
{
    case 1:
        Console.WriteLine("One");
        break;
    case 2:
        Console.WriteLine("Two");
        break;
    case 3:
        Console.WriteLine("Three");
        break;
    default:
        Console.WriteLine("Other Number"); // Print to console
        break;
}
int number = 3;
switch (number)
{
    case 1:
        Console.WriteLine("One");
        break;
    case 2:
        Console.WriteLine("Two");
        break;
    case 3:
        Console.WriteLine("Three");
        break;
    default:
        Console.WriteLine("Other Number"); // Print to console
        break;
}
Dim number As Integer = 3
Select Case number
	Case 1
		Console.WriteLine("One")
	Case 2
		Console.WriteLine("Two")
	Case 3
		Console.WriteLine("Three")
	Case Else
		Console.WriteLine("Other Number") ' Print to console
End Select
$vbLabelText   $csharpLabel

W tym przykładzie program wyświetli "Trzy" jako wynik, ponieważ liczba pasuje do case 3.

Rola domyślnego przypadku

Zrozumienie domyślnego przypadku w bloku Switch

W instrukcji switch przypadek domyślny odgrywa kluczową rolę. Służy jako opcja wychwytująca, która wykonuje się, gdy żadna z określonych etykiet case nie pasuje do wartości wyrażenia switch. Chociaż jest opcjonalny, włączenie przypadku domyślnego to dobra praktyka, aby obsługiwać nieoczekiwane lub nieznane wartości.

Jak i kiedy używać instrukcji domyślnej

Przypadek domyślny jest używany, gdy chcesz wykonać blok kodu, jeśli żadna z konkretnych instrukcji nie pasuje. Zapewnia, że instrukcja switch zawsze ma zdefiniowane zachowanie, niezależnie od danych wejściowych. Domyślny przypadek jest deklarowany używając słowa kluczowego default, a następnie dwukropka.

default:
    // Code to execute if no case matches
    break;
default:
    // Code to execute if no case matches
    break;
Case Else
	' Code to execute if no case matches
	break
$vbLabelText   $csharpLabel

Przypadek domyślny można umieścić w dowolnym miejscu w bloku switch, ale zazwyczaj umieszcza się go na końcu dla czytelności.

Przykład: Instrukcja Switch z przypadkiem domyślnym

Rozważ scenariusz, w którym oceniasz dzień tygodnia:

int day = 5;
string dayName;
switch (day)
{
    case 1:
        dayName = "Monday";
        break;
    case 2:
        dayName = "Tuesday";
        break;
    case 3:
        dayName = "Wednesday";
        break;
    case 4:
        dayName = "Thursday";
        break;
    case 5:
        dayName = "Friday";
        break;
    case 6:
        dayName = "Saturday";
        break;
    case 7:
        dayName = "Sunday";
        break;
    default:
        dayName = "Invalid day";
        break;
}
Console.WriteLine(dayName);
int day = 5;
string dayName;
switch (day)
{
    case 1:
        dayName = "Monday";
        break;
    case 2:
        dayName = "Tuesday";
        break;
    case 3:
        dayName = "Wednesday";
        break;
    case 4:
        dayName = "Thursday";
        break;
    case 5:
        dayName = "Friday";
        break;
    case 6:
        dayName = "Saturday";
        break;
    case 7:
        dayName = "Sunday";
        break;
    default:
        dayName = "Invalid day";
        break;
}
Console.WriteLine(dayName);
Dim day As Integer = 5
Dim dayName As String
Select Case day
	Case 1
		dayName = "Monday"
	Case 2
		dayName = "Tuesday"
	Case 3
		dayName = "Wednesday"
	Case 4
		dayName = "Thursday"
	Case 5
		dayName = "Friday"
	Case 6
		dayName = "Saturday"
	Case 7
		dayName = "Sunday"
	Case Else
		dayName = "Invalid day"
End Select
Console.WriteLine(dayName)
$vbLabelText   $csharpLabel

W tym przykładzie, jeśli day ma wartość inną niż od 1 do 7, zostanie wykonany domyślny przypadek, ustawiając dayName na 'Niepoprawny dzień'.

Najlepsze praktyki dla przypadku domyślnego

  • Zawsze włącz przypadek domyślny: Nawet jeśli uważasz, że pokryłeś wszystkie możliwe przypadki, włącz przypadek domyślny, aby obsłużyć nieprzewidziane wartości.
  • Sensowne działania: Użyj przypadku domyślnego do wykonania sensownych działań, takich jak rejestrowanie błędów, ustawianie wartości domyślnej czy powiadamianie użytkownika o nieznanej wartości.

Zaawansowane funkcje Switch

Introduction to Switch Expressions in C

Wraz z ewolucją C#, wprowadzone zostały switch expressions jako bardziej zwięzły i wyrazisty sposób obsługi wielu gałęzi warunkowych. W przeciwieństwie do tradycyjnych instrukcji switch, switch expressions zwracają wartość i są bardziej zoptymalizowane, dzięki czemu stanowią potężne narzędzie w nowoczesnym programowaniu w C#.

Składnia Switch Expressions

Składnia switch expression w C# to bardziej zwarta forma instrukcji case switch. Oto podstawowa struktura:

var result = variable switch
{
    value1 => result1,
    value2 => result2,
    _ => defaultResult
};
var result = variable switch
{
    value1 => result1,
    value2 => result2,
    _ => defaultResult
};
'INSTANT VB TODO TASK: The following 'switch expression' was not converted by Instant VB:
'var result = variable switch
'{
'	value1 => result1,
'	value2 => result2,
'	_ => defaultResult
'};
$vbLabelText   $csharpLabel

Symbol podkreślenia (_) reprezentuje przypadek domyślny w switch expressions, funkcjonując podobnie do bloku domyślnego w tradycyjnych instrukcjach switch.

Przykład: Wykorzystanie switch expressions

Rozważ scenariusz, w którym musisz skategoryzować odczyt temperatury:

int temperature = 25;
string weatherDescription = temperature switch
{
    <= 0 => "Freezing",
    < 20 => "Cold",
    < 30 => "Mild",
    _ => "Hot"
};
Console.WriteLine(weatherDescription);
int temperature = 25;
string weatherDescription = temperature switch
{
    <= 0 => "Freezing",
    < 20 => "Cold",
    < 30 => "Mild",
    _ => "Hot"
};
Console.WriteLine(weatherDescription);
Dim temperature As Integer = 25
'INSTANT VB TODO TASK: The following 'switch expression' was not converted by Instant VB:
'string weatherDescription = temperature switch
'{
'	<= 0 => "Freezing",
'	< 20 => "Cold",
'	< 30 => "Mild",
'	_ => "Hot"
'};
Console.WriteLine(weatherDescription)
$vbLabelText   $csharpLabel

W tym przykładzie, switch expression zwięźle kategoryzuje temperaturę, z przypadkiem domyślnym (_) obejmującym każde scenariusz, który nie jest dopasowany przez inne przypadki.

Dopasowywanie wzorców z switch expressions

Switch expressions w C# umożliwiają dopasowywanie wzorców, co czyni je jeszcze bardziej wszechstronnymi. Możesz dopasowywać typy, wartości, a nawet wzorce:

object obj = // some object;
string description = obj switch
{
    int i => $"Integer: {i}",
    string s => $"String: {s}",
    _ => "Unknown type"
};
object obj = // some object;
string description = obj switch
{
    int i => $"Integer: {i}",
    string s => $"String: {s}",
    _ => "Unknown type"
};
'INSTANT VB TODO TASK: The following 'switch expression' was not converted by Instant VB:
'object obj = string description = obj switch
'{
'	int i => $"Integer: {i}",
'	string s => $"String: {s}",
'	_ => "Unknown type"
'};
$vbLabelText   $csharpLabel

Instrukcja C# 'switch' kontra 'switch expression'

  • C# Switch Statement: Tradycyjnie używane do wykonywania różnych bloków kodu w oparciu o wartość zmiennej. Wymaga instrukcji break dla każdego przypadku.
  • Switch Expression: Wprowadzone w C# 8.0, oferuje bardziej zwięzłą składnię i jest zwykle używane, gdy konieczne jest zwrócenie wartości w oparciu o warunek.

Integrating Switch Statements with IronPDF in C

Instrukcja przypadku C# (Jak to działa dla programistów): Rysunek 1 - IronPDF

Odkryj funkcje IronPDF to .NET biblioteka PDF do tworzenia, edytowania i pracy z dokumentami PDF. Po połączeniu z instrukcjami lub wyrażeniami switch w C#, staje się potężnym narzędziem do obsługi różnych operacji związanych z PDF na podstawie określonych warunków. Ta integracja jest szczególnie użyteczna dla zadań, które wymagają podejmowania decyzji w oparciu o zawartość PDF lub metadane.

Kluczową funkcją IronPDF jest konwertowanie HTML do PDF przy zachowaniu układów i stylów. Jest to idealne do tworzenia PDF z treści internetowych, w tym raportów, faktur i dokumentacji. Pliki HTML, adresy URL i ciągi HTML można łatwo konwertować na pliki PDF.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

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

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Przykład: Warunkowe znakowanie wodne z IronPDF and Switch Statements

Rozważmy scenariusz, w którym posiadasz dokument PDF, i chcesz zastosować różne znaki wodne w zależności od liczby stron w dokumencie. Oto, jak możesz to osiągnąć, używając IronPDF w połączeniu z instrukcją switch w C#:

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        IronPdf.License.LicenseKey = "Your-License-Code";
        PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
        // Define different watermark HTML for each case
        string watermarkHtmlOnePage = "<div style='color:red;'>One Page Document</div>";
        string watermarkHtmlTwoPage = "<div style='color:blue;'>Two Page Document</div>";
        switch (pdf.PageCount)
        {
            case 1:
                // Apply watermark for one-page document
                pdf.ApplyWatermark(watermarkHtmlOnePage);
                break;
            case 2:
                // Apply watermark for two-page documents
                pdf.ApplyWatermark(watermarkHtmlTwoPage);
                break;
            default:
                // Apply a default watermark for other cases
                pdf.ApplyWatermark("<div style='color:green;'>Multiple Page Document</div>");
                break;
        }
        // Save the watermarked PDF
        pdf.SaveAs("watermarked.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        IronPdf.License.LicenseKey = "Your-License-Code";
        PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
        // Define different watermark HTML for each case
        string watermarkHtmlOnePage = "<div style='color:red;'>One Page Document</div>";
        string watermarkHtmlTwoPage = "<div style='color:blue;'>Two Page Document</div>";
        switch (pdf.PageCount)
        {
            case 1:
                // Apply watermark for one-page document
                pdf.ApplyWatermark(watermarkHtmlOnePage);
                break;
            case 2:
                // Apply watermark for two-page documents
                pdf.ApplyWatermark(watermarkHtmlTwoPage);
                break;
            default:
                // Apply a default watermark for other cases
                pdf.ApplyWatermark("<div style='color:green;'>Multiple Page Document</div>");
                break;
        }
        // Save the watermarked PDF
        pdf.SaveAs("watermarked.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		IronPdf.License.LicenseKey = "Your-License-Code"
		Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")
		' Define different watermark HTML for each case
		Dim watermarkHtmlOnePage As String = "<div style='color:red;'>One Page Document</div>"
		Dim watermarkHtmlTwoPage As String = "<div style='color:blue;'>Two Page Document</div>"
		Select Case pdf.PageCount
			Case 1
				' Apply watermark for one-page document
				pdf.ApplyWatermark(watermarkHtmlOnePage)
			Case 2
				' Apply watermark for two-page documents
				pdf.ApplyWatermark(watermarkHtmlTwoPage)
			Case Else
				' Apply a default watermark for other cases
				pdf.ApplyWatermark("<div style='color:green;'>Multiple Page Document</div>")
		End Select
		' Save the watermarked PDF
		pdf.SaveAs("watermarked.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Oto wyjściowy plik PDF jednej strony:

Instrukcja przypadku C# (Jak to działa dla programistów): Rysunek 2 - Wyjście

Wnioski

W tym samouczku zbadaliśmy instrukcję switch case w C#, podstawową formę podejmowania decyzji w programowaniu. Zaczynaliśmy od zrozumienia jej podstawowej struktury i porównaliśmy ją z tradycyjnymi instrukcjami if-else, podkreślając jej zalety w czytelności i prostocie przy obsłudze wielu warunków.

Utworzyliśmy proste case switch, obsłużyliśmy różne scenariusze z przypadkiem domyślnym i eksplorowaliśmy zaawansowane funkcje, takie jak switch expressions. Rzeczywiste zastosowanie instrukcji switch zostało zaprezentowane poprzez przykład integracji z IronPDF do dynamicznego przetwarzania PDF, pokazując, jak instrukcje switch mogą być cennym narzędziem w zestawie narzędzi programisty.

IronPDF oferuje bezpłatną wersję próbną do eksploracji funkcji, umożliwiając wypróbowanie jego funkcji i funkcjonalności. Aby kontynuować korzystanie i uzyskać dostęp do pełnego zestawu narzędzi, licencje IronPDF zaczynają się od konkurencyjnego modelu cenowego, oferując kompleksowe rozwiązanie dla wszystkich Twoich potrzeb przetwarzania PDF w C#.

Często Zadawane Pytania

Jak mogę wykorzystać instrukcje switch do zarządzania przetwarzaniem PDF w C#?

Możesz wykorzystać instrukcje switch do zarządzania przetwarzaniem PDF poprzez wykonywanie różnych operacji na PDF na podstawie warunków, takich jak liczba stron lub typ dokumentu, korzystając z biblioteki takiej jak IronPDF.

Jaka jest roznica miedzy instrukcja switch a wyrazeniem switch w C#?

Instrukcja switch zapewnia strukturalny sposob obsługi wielu warunków z użyciem instrukcji break, aby zapobiec przeskakiwaniu, podczas gdy wyrazenie switch jest bardziej zwiezle, zwraca wartosc i eliminuje potrzebe użycia instrukcji break.

Dlaczego domyslna sprawa jest ważna w instrukcjach switch w C#?

Domyslna sprawa jest kluczowa, poniewaz zapewnia obsługę nieoczekiwanych wartosci, zapobiegając bledom poprzez zapewnienie akcji awaryjnej, gdy zadna sprawa nie pasuje do wyrazenia.

Jak wyrazenia switch zwiększają czytelnosc kodu w C#?

Wyrazenia switch zwiększają czytelnosc kodu, oferujac zwiezla skladnie na potrzeby rozgalezien warunkowych, pozwalając programistom na wyrazanie logiki w bardziej zwartej formie, co ułatwia zrozumienie i utrzymanie kodu.

Czy instrukcje switch mogą być używane do obsługi błędów w aplikacjach C#?

Tak, instrukcje switch mogą być używane do obsługi błędów, kierujac program do specyficznych procedur obsługi błędów na podstawie kodow błędów lub warunków, co poprawia solidnosc aplikacji C#.

Jaki jest praktyczny przykład użycia instrukcji switch z IronPDF?

Praktyczny przykład to użycie instrukcji switch do zastosowania różnych znakow wodnych do dokumentu PDF na podstawie liczby stron lub innych kryteriow, korzystając z IronPDF do zadań manipulacji PDF.

Jak IronPDF ułatwia operacje na PDF oparte na switch?

IronPDF ułatwia operacje na PDF oparte na switch, oferujac mocny zestaw narzędzi i metod, ktore mogą być uruchamiane warunkowo przy użyciu instrukcji switch do zadań takich jak konwersja, edytowanie i renderowanie PDF.

Jakie sa niektore powszechne scenariusze użycia instrukcji switch w przetwarzaniu PDF?

Powszechne scenariusze użycia obejmuja stosowanie różnych zasad przetwarzania na podstawie metadanych dokumentu, takich jak stosowanie specyficznego formatowania lub konwersji na podstawie typu lub zawartości dokumentu.

Jak IronPDF może pomoc w tworzeniu czytelnego i łatwego do utrzymania kodu z instrukcjami switch?

IronPDF pomaga oferujac kompleksowe metody manipulacji PDF, ktore mogą być zorganizowane za pomoca instrukcji switch, co skutkuje kodem czytelnym i łatwym do utrzymania dzięki jego uporzadkowanej logice.

Jakie zalety oferuja instrukcje switch w porownaniu z blokami if-else w podejmowaniu decyzji?

Instrukcje switch oferuja bardziej uporzadkowana i mniej narazona na błędy strukture do obsługi wielu dyskretnych warunków, zwiększając przejrzystosc kodu i zmniejszajac prawdopodobienstwo błędów w porownaniu z dlugimi łańcuchami if-else.

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

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie