跳過到頁腳內容
.NET幫助

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

在龐大的程式語言領域中,提高程式碼的可讀性和效率是最重要的,而 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;
}
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 語句

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

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 引入了 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;
}
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 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);
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. Introducing IronPDF in C#

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;
        }
    }
}
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" 代表 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教學

常見問題解答

在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技術的創新,同時指導下一代技術領導者。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我