跳過到頁腳內容
.NET幫助

C# 切换语句(开发者的工作原理)

在廣大的程式語言領域中,提升代碼的可讀性和效率至關重要,而 C# 語言則以多樣的構造來支持您的編碼需求,堅毅不拔。 在其強大的工具中,"C# Switch Statement" 顯著地脫穎而出。 這本綜合指南將探討 C# 語言中的細微差異。 我們將深入研究其多方面的用途,並通過涉及 IronPDF 的實際案例照亮其應用,這是一個用於 PDF 生成的多功能 C# 庫。 此旅程的目標不僅在於解析其機制,還在更廣泛的 C# 開發領域中強調其意義。

1. 理解 Switch 語句

C# 中的 switch 語句是一種控制流語句,讓開發者在處理多個條件時可以編寫更清晰和更簡潔的代碼。 當你想根據特定變量的值執行不同動作時,它尤其有用。

這使得它成為以關鍵字/變量為中心時的 if-else 語句的完美替代方案,因為它增強了代碼的可讀性和可維護性。 與 if-else 語句不同的是,它可能會導致嵌套結構及潛在的代碼複雜性,switch 語句提供了一個更有組織的替代方案。當需要根據變量的值觸發不同動作時,它特別有益。

現在,讓我們仔細看看在 switch 語句的上下文中,中斷的角色。 在 C# 中,break 語句用於終止與 switch 塊中的特定情況相關的代碼塊的執行。 當匹配或 switch 情況匹配且與該情況相對應的代碼塊執行時,break 語句在防止後續情況被評估中至關重要。 如果你希望在語句中包含穿透行為,就應使用 goto 語句來代替 break

這是 C# 中 switch 語句的基本結構:

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

現在,讓我們探討不同類型的 switch 語句及其用例。

2. Switch 語句的類型及其用途

2.1. 簡單 Switch 語句

這是 Switch 語句的最基本形式。 它將變量與常量值對比,並執行與第一個匹配值或情況相關聯的代碼塊。 如果沒有匹配,則執行默認代碼塊。

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. 帶有模式的 Switch 語句(C# 7.0 及更高版本)

C# 7.0 引入了情況模式匹配,這允許更具表達性和靈活性的 switch 語句。 模式匹配表達式可以包含類型模式、屬性模式等,讓代碼更加可讀。

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. Switch 表達式(C# 8.0 及更高版本)

在 C# 8.0 中,引入了一種新的更簡潔的 switch 語句形式稱為 switch 表達式。 它們可以用於需要常量表達式的地方,讓代碼變得更短小更優雅。

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

現在,我們已經對 Switch 語句有了充分的了解,讓我們看看如何在 C# 中應用它們於實際場景中使用 IronPDF。

3. 在 C# 中引入 IronPDF

IronPDF 是一個受歡迎的 C# 庫,允許開發者輕鬆生成和操作 PDF 文檔。 它簡化了與 PDF 文件創建、編輯和渲染相關的任務。 讓我們探討如何利用 Switch 語句與 IronPDF 一起提升您的程式功能和組織性。

3.1. 使用 Switch 語句與 IronPDF

假設你正在開發一個文件管理系統,你需要根據文件內容的使用案例生成不同類型的 PDF。 這裡是如何利用 Switch 語句與 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

此 C# 程序利用 IronPDF 庫根據用戶輸入動態生成 PDF 文件。 提示用戶輸入 'I' 代表發票或 'R' 代表報告。 根據輸入,程序使用 ChromePdfRenderer 類將對應的 HTML 文件("report.html" 對應報告或 "invoice.html" 對應發票)渲染成 PDF 格式。 生成的 PDF 隨後以適當的文件名保存,"Report.pdf" 對應報告,"Invoice.pdf" 對應發票。這種方法提供了一種靈活和交互的方式來通過控制台接口生成特定類型的 PDF 文檔。

3.2. 報告示例

在下面的示例中,我們將根據用戶輸入創建一個報告。

控制台輸入:

C# Switch Statement (How It Works For Developers) 圖 1 - 用戶在控制台的輸入(報告)

輸出 PDF:

C# Switch Statement (How It Works For Developers) 圖 2 - 輸出 PDF 報告

3.3. 發票示例

在此語句示例中,我們將使用來自用戶的輸入和 Switch 語句創建一個發票。

控制台輸入:

C# Switch Statement (How It Works For Developers) 圖 3 - 用戶在控制台的輸入(發票)

輸出 PDF:

C# Switch Statement (How It Works For Developers) 圖 4 - 輸出 PDF(發票)

4. 結論

總而言之,C# 中的 switch 語句作為一個強大的控制流工具,為開發者提供了一種更有組織和更簡潔的方法來處理多個條件,相較於傳統的 if-else 語句。 通過根據變量值來分類代碼執行,switch 語句可以提升您的代碼的可讀性和可維護性。

switch 語句的多功能性通過各種類型展示出來,包括簡單的切換、模式基於的 switch 塊和 switch 表達式,每一種適用於特定的編碼場景。

IronPDF 庫的整合顯示了 switch 語句在基於用戶輸入生成動態 PDF 文檔的實際應用,並展示了如何在真實世界場景中利用此特性來提升您的 C# 編碼的靈活性和效率。

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

常見問題解答

在C#中,switch陳述式如何提高代碼可讀性?

switch陳述式通過提供處理多個條件的結構化方法來提高C#中的代碼可讀性,減少嵌套的if-else陳述式的複雜性。它允許開發人員根據變量值清楚地劃分不同的代碼執行路徑。

switch陳述式在PDF生成中的實用應用是什麼?

switch陳述式可以在PDF生成中使用,以根據用戶輸入動態創建不同類型的PDF。例如,使用IronPDF的switch陳述式可以決定生成報告或發票PDF,從而簡化文檔管理任務。

模式匹配如何增強C#的switch陳述式?

在C# 7.0中引入的模式匹配通過允許更具表達力和靈活性的代碼來增強switch陳述式。它包括類型模式和屬性模式,能夠實現複雜的條件檢查,提高switch塊中的代碼可讀性。

C# 8.0為switch陳述式帶來了哪些進步?

C# 8.0引入了switch表達式,提供了一種更簡潔形式的switch陳述式。這一進步允許更短、更優雅的條件邏輯,使代碼更易讀和維護。

為什麼開發人員可能會選擇switch陳述式而不是if-else陳述式?

開發人員可能會選擇switch陳述式而不是if-else陳述式來改善代碼組織和可讀性。switch陳述式根據變量值分類代碼執行,避免嵌套if-else結構的複雜性和凌亂。

switch陳述式可以與PDF庫集成以增強功能嗎?

可以,switch陳述式可以與像IronPDF一樣的PDF庫集成來增強功能。它們允許在PDF生成過程中進行動態決策,例如根據特定條件選擇不同的模板或文檔類型。

在C#的switch陳述式中,默認案例是如何運作的?

C# switch陳述式中的默認案例是在指定的案例都不匹配變量值時執行的。它作為一種回退機制,即使沒有其他案例滿足條件也能確保執行一些代碼。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。