
C# 切换语句(開發者的工作原理)
在廣大的程式語言中,提升程式碼的可讀性和效率是極為重要的,而 C# 語言作為中流砥柱,提供了多樣的結構以協助您的程式需求。 在其強大工具組中,C# Switch 語句尤為突出。 這份全面指南將探討它們在 C# 語言中的微妙細節。 我們將深入研究其多方面用法,並通過一個涉及 IronPDF 的真實案例來闡明其實際應用,這是一個用於 PDF 生成的多功能 C# 程式庫。 這次旅程的目的是不僅揭開其運作機制,還強調其在 C# 開發中更廣泛的意義。
1. 理解 Switch 語句
C# 中的 switch 語句是一種控制流語句,讓開發者在處理多個條件時能寫出更簡潔明瞭的程式碼。 當您希望根據特定變數的值執行不同的操作時,它尤其有用。
這使其成為 if-else 語句的完美替代方案,當關鍵字/變數是核心重點時,可以提高程式碼的可讀性和維護性。 不像 if-else 語句,可能會導致巢狀結構和程式碼複雜性增加,switch 語句提供了一個更有條理的替代方案。當使用的變數需要根據其值觸發不同的操作時,它特別有益。
現在,讓我們仔細看看在 switch 語句中的 break 的角色。 在 C# 中,break 語句用於終止與 switch 塊中特定 case 關聯的區塊的執行。 當匹配或 switch case 匹配時,並執行該 case 對應的程式碼區塊時,break 語句對防止後續 case 的評估至關重要。 如果您希望在語句中加入透過行為,應使用 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;
}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現在,讓我們探討不同型別的 switch 語句及其使用情境。
2. Switch 語句的型別及其用途
2.1. 簡單的 Switch 語句
這是 switch 語句中最基本的形式。 它將變數與常數值進行比較,並執行與第一個匹配值或 case 關聯的程式碼區塊。 如果未找到匹配,則執行預設的程式碼區塊。
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 Select2.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;
}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 Select2.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);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)現在,我們對 switch 語句已有了堅實的理解,讓我們看看如何在現實情境中,通過使用 C# 中的 IronPDF 應用它們。
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;
}
}
}Imports IronPdf
Imports System
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這個 C# 程式利用 IronPDF 庫根據使用者輸入動態生成 PDF 文件。 提示使用者輸入 'I' 表示 Invoice 或 'R' 表示 Report。 根據輸入,程式使用 ChromePdfRenderer 類將對應的 HTML 文件(Report 使用"report.html",Invoice 使用"invoice.html")渲染成 PDF 格式。 生成的 PDF 然後以適當的文件名儲存,Report 為"Report.pdf",Invoice 為"Invoice.pdf"。這種方法提供了一種靈活且互動的方式,通過控制台介面生成特定型別的 PDF 文件。
3.2. 報告範例
在以下範例中,我們將使用使用者輸入建立一個報告。
控制台輸入:

輸出 PDF:

3.3. 發票範例
在這個語句例子中,我們將使用使用者輸入和 switch 語句建立一個發票。
控制台輸入:

輸出 PDF:

4. 結語
總之,C# switch 語句作為一種強大的控制流工具脫穎而出,為開發者提供了一種比傳統 if-else 語句更有組織性和簡潔的方法來處理多個條件。 通過根據變數值對程式碼執行進行分類,switch 語句可以通過改善可讀性和維護性對您的程式碼產生貢獻。
switch 語句的多樣性通過各種型別來展示,包括簡單 Switch、基於模式的 Switch 幀和 Switch 表達式,分別適用於特定的編碼場景。
IronPDF 程式庫的整合展示了 switch 語句在生成基於使用者輸入的動態 PDF 文件上的實際應用,並展示了如何在現實場景中利用這個特性來提升您 C# 程式碼的靈活性和效率。
要探索 IronPDF 的功能並深入了解 HTML 到 PDF 的轉換,請造訪IronPDF 教程。

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。
相關文章


