跳過到頁腳內容
.NET幫助

C# 切换语句(開發者的工作原理)

在浩瀚的程式語言領域,提高程式碼的可讀性和效率至關重要,而 C# 語言憑藉其多樣化的結構,能夠滿足您的編碼需求,堪稱業界翹楚。 在 C# 的眾多強大工具中," C# Switch 語句"特別突出。 本綜合指南將探討 C# 語言中這些概念的細微差別。 我們將深入探討其多方面的用途,並透過一個涉及IronPDF (一個用於生成 PDF 的多功能 C# 庫)的真實場景來闡明其實際應用。 本次探索之旅不僅旨在揭示其機制,而且還旨在強調其在更廣泛的 C# 開發領域中的重要性。

1. 理解 switch 語句

C# 中的 switch 語句是一種控制流程語句,它允許開發人員在處理多個條件時編寫更簡潔的程式碼。 當您想要根據特定變數的值執行不同的操作時,它尤其有用。

當關鍵字/變數是中心焦點時,這使其成為 if-else 語句的完美替代方案,因為它提高了程式碼的可讀性和可維護性。 與可能導致巢狀結構和程式碼複雜性的 if-else 語句不同,switch 語句提供了一個更清晰的程式碼結構。當需要根據變數的值觸發不同操作時,switch 語句尤其有用。

現在,讓我們仔細看看 break 在 switch 語句中的作用。 在 C# 中, break語句用於終止 switch 區塊中與特定 case 關聯的程式碼區塊的執行。 當匹配或 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;
}
$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;
}
$vbLabelText   $csharpLabel

2.2. 帶有模式的 switch 語句(C# 7.0 及更高版本)

C# 7.0 引入了 case 模式匹配,使得 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;
}
$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);
$vbLabelText   $csharpLabel

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

3. Introducing IronPDF in C

IronPDF是一個流行的 C# 庫,它允許開發人員輕鬆產生和操作 PDF 文件。 它簡化了與 PDF 文件創建、編輯和渲染相關的任務。 讓我們來探討如何將 switch 語句與IronPDF結合使用,以增強程式碼的功能和組織性。

3.1. 在IronPDF中使用 Switch 語句

假設你正在開發一個文件管理系統,需要根據文件內容的使用產生不同類型的 PDF 文件。 以下是如何在IronPDF中使用 switch 語句的方法:

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;
        }
    }
}
$vbLabelText   $csharpLabel

此 C# 程式利用IronPDF庫,根據使用者輸入動態產生 PDF 檔案。 系統會提示使用者輸入"I"(發票)或"R"(報表)。 根據輸入內容,程式使用 ChromePdfRenderer 類別將對應的 HTML 檔案("report.html"表示報告,"invoice.html"表示發票)渲染成 PDF 格式。 產生的 PDF 檔案將以相應的檔案名稱儲存,例如"Report.pdf"用於報告,"Invoice.pdf"用於發票。這種方法提供了一種靈活且互動的方式,可以透過控制台介面產生特定類型的 PDF 文件。

3.2 報告範例

在下面的範例中,我們將使用使用者輸入的內容來建立一個報告。

控制台輸入:

C# Switch 語句(開發者如何理解其運作方式)圖 1 - 控制台中的使用者輸入(報表)

輸出PDF:

C# Switch 語句(開發者如何理解其運作方式)圖 2 - 輸出 PDF 報告

3.3 發票範例

在這個 case 語句範例中,我們將使用使用者輸入和 switch 語句建立一個發票。

控制台輸入:

C# Switch 語句(開發者如何理解其工作原理)圖 3 - 使用者在控制台中輸入(發票)

輸出PDF:

C# Switch 語句(開發者如何理解)圖 4 - 輸出 PDF(發票)

4. 結論

總之,C# switch 語句作為一種強大的控制流工具脫穎而出,與傳統的 if-else 語句相比,它為開發人員提供了一種更系統化、更簡潔的方法來處理多個條件。 switch 語句透過根據變數值對程式碼執行進行分類,可以提高程式碼的可讀性和可維護性,從而為你的編碼做出貢獻。

switch 語句的多功能性體現在各種類型中,包括簡單 switch、基於模式的 switch 區塊和 switch 表達式,每一種都適用於特定的編碼場景。

IronPDF庫的整合體現了 switch 語句在根據使用者輸入產生動態 PDF 文件方面的實際應用,並展示如何在實際場景中利用此功能來增強 C# 編碼的靈活性和效率。

要探索IronPDF的功能並了解更多關於 HTML 到 PDF 轉換的信息,請訪問IronPDF教程

常見問題解答

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

Jacob Mellor, Team Iron 首席技術官
首席技術官

Jacob Mellor是Iron Software的首席技術官,也是開創C# PDF技術的前瞻性工程師。作為Iron Software核心代碼庫的原始開發者,他自公司成立以來就塑造了公司的產品架構,並與CEO Cameron Rimington將公司轉型為服務NASA、Tesla以及全球政府機構的50多人公司。

Jacob擁有曼徹斯特大學土木工程一級榮譽學士學位(1998年–2001年)。他於1999年在倫敦開立首家軟體公司,並於2005年建立了他的第一個.NET組件,專注於解決Microsoft生態系統中的複雜問題。

他的旗艦作品IronPDF和Iron Suite .NET程式庫全球已獲得超過3000萬次NuGet安裝,他的基礎代碼不斷在全球各地驅動開發者工具。擁有25年以上的商業經驗和41年的編碼專業知識,Jacob仍然專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me