跳至頁尾內容
.NET 幫助

C# Switch 語句(開發者如何理解其運作方式)

在龐大的程式語言領域中,提高程式碼的可讀性和效率是最重要的,而 C# 語言則是其中的中流砥柱,因為它提供了多樣化的結構來協助您的編碼需求。 在其強大的工具庫中,"C# Switch Statement"顯得格外突出。 本綜合指南將在 C# 語言中探討它們的細微複雜之處。 我們將透過涉及 IronPDF(一個用於生成 PDF 的多功能 C# 函式庫)的真實情境,深入探討其多方面的用途,並說明其實際應用。 這趟旅程的目的不僅是要揭開其機理的面紗,更要強調其在 C# 開發更廣闊領域中的重要性。

1.瞭解 Switch 語句

C# 中的 switch 語句是一種控制流程語句,可讓開發人員在處理多重條件時寫出更乾淨簡潔的程式碼。 當您想要根據特定變數的值執行不同的動作時,它特別有用。

當關鍵字/變數是核心焦點時,這使得它成為 if-else 語句的完美替代品,因為它增加了程式碼的可讀性和維護能力。 if-else 語句可能會導致巢狀結構和潛在的程式碼複雜性,而 switch 語句則不同,它提供了更有條理的選擇。在處理需要根據變數值來觸發不同動作的變數時,它尤其有用。

現在,讓我們仔細看看在 switch 語句的上下文中,breaking 所扮演的角色。 在 C# 中,break 語句用於終止執行與 switch 區塊中特定情況相關的程式碼區塊。 當匹配或切換用例相對應,且該用例相對應的程式碼區塊被執行時,break 語句對於防止後續用例被評估至關重要。 如果您希望在您的語句中加入 fall-through 行為,您應該使用 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 語句

這是轉換陳述的最基本形式。 它會比較變數與常數值,並執行與第一個匹配值或情況相關的程式碼區塊。 如果找不到符合的項目,則會執行預設的程式碼區塊。

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 Expression (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 語句有了扎實的了解,讓我們看看如何在 C# 中使用 IronPdf 將其應用在實際情境中。

3.介紹 C# 中的 IronPDF;。

IronPDF是一個流行的 C# 函式庫,可讓開發人員輕鬆地產生和處理 PDF 文件。 它簡化了 PDF 檔案建立、編輯和渲染的相關工作。 讓我們來探討如何運用 IronPDF 的 switch statement 來強化編碼的功能和組織。

3.1.使用 IronPDF 的 Switch 語句。

假設您正在開發一個文件管理系統,您需要根據文件內容的使用情況產生不同類型的 PDF。 以下是您如何利用 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;
        }
    }
}
$vbLabelText   $csharpLabel

此 C# 程式利用 IronPDF 函式庫根據使用者的輸入動態產生 PDF 檔案。 提示使用者輸入 'I" 代表 Invoice 或 "R' 代表 Report。 視輸入內容而定,程式會使用 ChromePdfRenderer 類別將相對應的 HTML 檔案(Report 為"report.html",Invoice 為"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 - Output PDF Report

3.3.發票範例

在這個案例陳述範例中,我們將透過使用者的輸入和切換陳述來建立發票。

控制台輸入:

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 語句可以透過改善可讀性和可維護性,為您的編碼工作做出貢獻。

轉換語句的多樣性透過各種類型展現出來,包括簡單的轉換、基於模式的轉換區塊和轉換表達式,每種類型都能迎合特定的編碼情境。

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

若要探索 IronPDF 的功能,並進一步瞭解 HTML 至 PDF 的轉換,請造訪 IronPDF教學

常見問題解答

switch語句如何提高C#程式碼的可讀性?

switch 語句透過提供一種結構化的方式來處理多個條件,提高了 C# 程式碼的可讀性,從而降低了巢狀 if-else 語句的複雜性。它允許開發人員根據變數值清晰地劃分不同的程式碼執行路徑。

switch 語句在 PDF 產生中有什麼實際應用?

在 PDF 產生過程中,可以使用 switch 語句根據使用者輸入動態建立不同類型的 PDF。例如,在 IronPDF 中使用 switch 語句,您可以決定產生報告 PDF 還是發票 PDF,從而簡化文件管理任務。

模式匹配如何增強 C# switch 語句的功能?

C# 7.0 中引入的模式匹配增強了 switch 語句的功能,使其程式碼更具表現力和靈活性。它包括類型模式和屬性模式,從而能夠進行複雜的條件檢查,並提高 switch 程式碼區塊內的可讀性。

C# 8.0 為 switch 語句帶來了哪些改進?

C# 8.0 引入了 switch 表達式,它提供了一種更簡潔的 switch 語句形式。這項改進使得條件邏輯更加精簡優雅,從而提高了程式碼的可讀性和可維護性。

為什麼開發人員在 C# 中選擇 switch 語句而不是 if-else 語句?

為了提高程式碼的組織性和可讀性,開發者可能會選擇使用 switch 語句而不是 if-else 語句。 switch 語句根據變數值對程式碼執行進行分類,避免了巢狀 if-else 結構所帶來的複雜性和混亂。

能否將 switch 語句整合到 PDF 庫中以增強功能?

是的,switch語句可以與IronPDF等PDF庫集成,以增強其功能。它們允許在PDF生成過程中進行動態決策,例如根據特定條件選擇不同的範本或文件類型。

C# switch 語句中的 default case 是如何運作的?

在 C# switch 語句中,當所有指定的 case 都不滿足變數的值時,就會執行 default case。它起到回退機制的作用,確保即使沒有其他 case 滿足條件,也能執行一些程式碼。

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

Jacob Mellor 是 Iron Software 的首席技術官,也是一位富有遠見的工程師,率先開發了 C# PDF 技術。作為 Iron Software 核心程式碼庫的最初開發者,他自公司成立之初便參與塑造了其產品架構,並與執行長 Cameron Rimington 一起將其發展成為一家擁有 50 多名員工、服務於 NASA、特斯拉和全球政府機構的公司。

Jacob 於 1998 年至 2001 年在曼徹斯特大學獲得土木工程一級榮譽學士學位。 1999 年,他在倫敦創辦了自己的第一家軟體公司;2005 年,他創建了自己的第一個 .NET 元件。此後,他專注於解決微軟生態系統中的複雜問題。

他的旗艦產品 IronPDF 和 IronSuite .NET 庫在全球 NuGet 上的安裝量已超過 3000 萬次,其基礎程式碼持續為全球開發者工具提供支援。憑藉 25 年的商業經驗和 41 年的程式設計專長,Jacob 始終致力於推動企業級 C#、Java 和 Python PDF 技術的創新,同時指導下一代技術領導者。