跳過到頁腳內容
.NET幫助

C# Case Statement(開發者的工作原理)

C# 中的 switch 語句為多個 if-else 區塊提供了更精簡、可讀性更高的替代方案。 當您有一個變數可以取幾個不同值中的一個,而您需要根據該值執行不同的程式碼時,它就會很有幫助。 switch 語句會評估一個表達式,並根據匹配的值執行程式碼,使其成為程式碼中決策不可或缺的一部分。

if-else 結構對於簡單的條件或檢查非常有用,而 switch case 語句則在處理較複雜的條件檢查時表現優異,尤其是那些基於單一變數或模式匹配表達式的檢查。 相較於 if 語句,它們提供了更乾淨、更易懂的語法,這對於程式碼的撰寫與維護都非常重要。

Switch 語句的基本原理

什麼是 Switch 語句?

C# 中的 switch 語句是一種控制結構,用來從許多程式碼路徑中選擇一個執行。 選擇的依據是值或表達式。 這是使用多個 if-else 條件的有效替代方法,尤其是在處理可能有多個不同值的變數時。

文法

switch 語句的基本語法簡單直接:

// Switch statement
switch (variable)
{
    case value1:
        // Code to execute if variable equals value1
        break;
    case value2:
        // Code to execute if variable equals value2
        break;
    // More cases as needed
    default:
        // Code to execute if variable doesn't match any case
        break;
}
// Switch statement
switch (variable)
{
    case value1:
        // Code to execute if variable equals value1
        break;
    case value2:
        // Code to execute if variable equals value2
        break;
    // More cases as needed
    default:
        // Code to execute if variable doesn't match any case
        break;
}
' Switch statement
Select Case variable
	Case value1
		' Code to execute if variable equals value1
	Case value2
		' Code to execute if variable equals value2
	' More cases as needed
	Case Else
		' Code to execute if variable doesn't match any case
End Select
$vbLabelText   $csharpLabel
  • switch (variable): 此處指定要評估的變數或表達式。
  • case value1:這些是您針對變數檢查的不同值或條件。
  • break:此關鍵字用於在執行匹配的情況後退出 switch 區塊。
  • 預設語句:如果指定的情況都不符合變數,則執行此區塊。

瞭解 Break 語句

開關中的 break 語句至關重要。 它可以防止 "fall through "行為,即即使已符合匹配條件,執行仍會移至後續情況。 每個 case 區塊通常以 break 語句結束,以確保只執行匹配 case 下的程式碼。

比較 Switch 語句和 If-Else 語句

if-else 語句的結構包含檢查一個條件,並在條件為真時執行一個程式碼區塊,而 switch 語句則是將單一變數或表達式與多個潛在值進行比較。 當您有許多條件或 case 模式需要檢查時,這會讓 switch 語句更簡潔,也更容易閱讀。

範例:使用 Switch 語句

int number = 3;
switch (number)
{
    case 1:
        Console.WriteLine("One");
        break;
    case 2:
        Console.WriteLine("Two");
        break;
    case 3:
        Console.WriteLine("Three");
        break;
    default:
        Console.WriteLine("Other Number"); // Print to console
        break;
}
int number = 3;
switch (number)
{
    case 1:
        Console.WriteLine("One");
        break;
    case 2:
        Console.WriteLine("Two");
        break;
    case 3:
        Console.WriteLine("Three");
        break;
    default:
        Console.WriteLine("Other Number"); // Print to console
        break;
}
Dim number As Integer = 3
Select Case number
	Case 1
		Console.WriteLine("One")
	Case 2
		Console.WriteLine("Two")
	Case 3
		Console.WriteLine("Three")
	Case Else
		Console.WriteLine("Other Number") ' Print to console
End Select
$vbLabelText   $csharpLabel

在此範例中,由於數字符合大小寫 3,因此程式會列印"Three"作為輸出。

預設案例的作用

了解開關區塊中的預設值

在 switch 語句中,預設情況起著關鍵作用。 當指定的大小寫標籤都不符合切換表達式的值時,它就會被執行,作為一個全包選項。 雖然這是可選的,但包含預設情況是處理意外或未知值的良好做法。

如何以及何時使用預設語句

當您想要執行一個程式碼區塊時,如果沒有任何特定情況符合,就會使用預設情況。 它可以確保切換語句始終具有定義的行為,無論輸入的是什麼。 預設情況使用 default 關鍵字來宣告,後面跟一個冒號。

default:
    // Code to execute if no case matches
    break;
default:
    // Code to execute if no case matches
    break;
Case Else
	' Code to execute if no case matches
	break
$vbLabelText   $csharpLabel

預設情況可以放在切換區塊中的任何位置,但為了易讀性,通常會放在最後。

範例:具有預設 Case 的 Switch 語句

考慮一個評估一周中某一天的情境:

int day = 5;
string dayName;
switch (day)
{
    case 1:
        dayName = "Monday";
        break;
    case 2:
        dayName = "Tuesday";
        break;
    case 3:
        dayName = "Wednesday";
        break;
    case 4:
        dayName = "Thursday";
        break;
    case 5:
        dayName = "Friday";
        break;
    case 6:
        dayName = "Saturday";
        break;
    case 7:
        dayName = "Sunday";
        break;
    default:
        dayName = "Invalid day";
        break;
}
Console.WriteLine(dayName);
int day = 5;
string dayName;
switch (day)
{
    case 1:
        dayName = "Monday";
        break;
    case 2:
        dayName = "Tuesday";
        break;
    case 3:
        dayName = "Wednesday";
        break;
    case 4:
        dayName = "Thursday";
        break;
    case 5:
        dayName = "Friday";
        break;
    case 6:
        dayName = "Saturday";
        break;
    case 7:
        dayName = "Sunday";
        break;
    default:
        dayName = "Invalid day";
        break;
}
Console.WriteLine(dayName);
Dim day As Integer = 5
Dim dayName As String
Select Case day
	Case 1
		dayName = "Monday"
	Case 2
		dayName = "Tuesday"
	Case 3
		dayName = "Wednesday"
	Case 4
		dayName = "Thursday"
	Case 5
		dayName = "Friday"
	Case 6
		dayName = "Saturday"
	Case 7
		dayName = "Sunday"
	Case Else
		dayName = "Invalid day"
End Select
Console.WriteLine(dayName)
$vbLabelText   $csharpLabel

在此範例中,如果 day 的值不是 1 到 7,則會執行預設情況,將 dayName 設為"無效的日"。

預設案例的最佳實務

  • Always Include a Default(永遠包含預設值):即使您認為自己已涵蓋所有可能的情況,也應包含預設值,以處理不可預見的值。
  • 有意義的動作:使用預設情況執行有意義的動作,例如記錄錯誤、設定預設值或通知使用者未知值。

進階開關功能

C# 中的切換表示法簡介;

隨著 C# 的演進,switch 表達式被引入作為處理多重條件分支的一種更簡潔、更具表達力的方式。 與傳統的 switch 語句不同,switch 表達式會回傳一個值,而且更為精簡,是現代 C# 程式設計的強大工具。

開關表達式的語法

C# 中 switch 表達式的語法是 switch case 語句的一種更精簡的形式。 以下是基本結構:

var result = variable switch
{
    value1 => result1,
    value2 => result2,
    _ => defaultResult
};
var result = variable switch
{
    value1 => result1,
    value2 => result2,
    _ => defaultResult
};
'INSTANT VB TODO TASK: The following 'switch expression' was not converted by Instant VB:
'var result = variable switch
'{
'	value1 => result1,
'	value2 => result2,
'	_ => defaultResult
'};
$vbLabelText   $csharpLabel

下劃線 (_) 符號代表 switch 表達式中的預設情況,功能類似於傳統 switch 語句中的預設區塊。

範例:使用 Switch 表達式

考慮一個您需要將溫度讀數歸類的情境:

int temperature = 25;
string weatherDescription = temperature switch
{
    <= 0 => "Freezing",
    < 20 => "Cold",
    < 30 => "Mild",
    _ => "Hot"
};
Console.WriteLine(weatherDescription);
int temperature = 25;
string weatherDescription = temperature switch
{
    <= 0 => "Freezing",
    < 20 => "Cold",
    < 30 => "Mild",
    _ => "Hot"
};
Console.WriteLine(weatherDescription);
Dim temperature As Integer = 25
'INSTANT VB TODO TASK: The following 'switch expression' was not converted by Instant VB:
'string weatherDescription = temperature switch
'{
'	<= 0 => "Freezing",
'	< 20 => "Cold",
'	< 30 => "Mild",
'	_ => "Hot"
'};
Console.WriteLine(weatherDescription)
$vbLabelText   $csharpLabel

在這個範例中,切換表達式簡潔地將溫度分類,預設情況 (_) 涵蓋其他情況無法匹配的任何情況。

使用 Switch Expressions 進行模式匹配

C# 中的 Switch 表達式允許模式匹配,使其用途更加廣泛。您可以匹配類型、值甚至模式:

object obj = // some object;
string description = obj switch
{
    int i => $"Integer: {i}",
    string s => $"String: {s}",
    _ => "Unknown type"
};
object obj = // some object;
string description = obj switch
{
    int i => $"Integer: {i}",
    string s => $"String: {s}",
    _ => "Unknown type"
};
'INSTANT VB TODO TASK: The following 'switch expression' was not converted by Instant VB:
'object obj = string description = obj switch
'{
'	int i => $"Integer: {i}",
'	string s => $"String: {s}",
'	_ => "Unknown type"
'};
$vbLabelText   $csharpLabel

C# Switch 語句 vs. Switch Expression

  • C# Switch 語句:傳統上用於根據變量的值執行不同的程式碼區塊。 它要求為每個情況提供一個分斷語句。
  • Switch Expression:在 C# 8.0 中引入,提供了更簡潔的語法,通常用於需要根據條件返回值的情況。

在 C# 中使用 IronPDF 整合 Switch 語句;。

C# Case Statement (How it Works For Developers):圖 1 - IronPdf

Explore IronPDF Features 是一個 .NET PDF 函式庫,用於建立、編輯和處理 PDF 文件。 當與 C# 切換語句或表達式結合時,它會成為根據特定條件處理各種 PDF 相關作業的強大工具。 這種整合對於需要根據 PDF 內容或元資料進行決策的工作特別有用。

IronPDF 的主要功能是將HTML 轉換為帶有版面和樣式的 PDF,同時保持版面和樣式不變。 這是從網頁內容(包括報告、發票和文件)建立 PDF 的理想選擇。 HTML 檔案、URL 和 HTML 字串均可轉換為 PDF 檔案。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

範例:使用 IronPDF 和 Switch 語句進行條件式水印。

讓我們考慮一個情況:您有一份 PDF 文件,您想要根據文件的頁數依頁數套用不同的水印。 以下是如何使用 IronPDF 結合 C# 切換語句來實現這一目標:

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        IronPdf.License.LicenseKey = "Your-License-Code";
        PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
        // Define different watermark HTML for each case
        string watermarkHtmlOnePage = "<div style='color:red;'>One Page Document</div>";
        string watermarkHtmlTwoPage = "<div style='color:blue;'>Two Page Document</div>";
        switch (pdf.PageCount)
        {
            case 1:
                // Apply watermark for one-page document
                pdf.ApplyWatermark(watermarkHtmlOnePage);
                break;
            case 2:
                // Apply watermark for two-page documents
                pdf.ApplyWatermark(watermarkHtmlTwoPage);
                break;
            default:
                // Apply a default watermark for other cases
                pdf.ApplyWatermark("<div style='color:green;'>Multiple Page Document</div>");
                break;
        }
        // Save the watermarked PDF
        pdf.SaveAs("watermarked.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        IronPdf.License.LicenseKey = "Your-License-Code";
        PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
        // Define different watermark HTML for each case
        string watermarkHtmlOnePage = "<div style='color:red;'>One Page Document</div>";
        string watermarkHtmlTwoPage = "<div style='color:blue;'>Two Page Document</div>";
        switch (pdf.PageCount)
        {
            case 1:
                // Apply watermark for one-page document
                pdf.ApplyWatermark(watermarkHtmlOnePage);
                break;
            case 2:
                // Apply watermark for two-page documents
                pdf.ApplyWatermark(watermarkHtmlTwoPage);
                break;
            default:
                // Apply a default watermark for other cases
                pdf.ApplyWatermark("<div style='color:green;'>Multiple Page Document</div>");
                break;
        }
        // Save the watermarked PDF
        pdf.SaveAs("watermarked.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		IronPdf.License.LicenseKey = "Your-License-Code"
		Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")
		' Define different watermark HTML for each case
		Dim watermarkHtmlOnePage As String = "<div style='color:red;'>One Page Document</div>"
		Dim watermarkHtmlTwoPage As String = "<div style='color:blue;'>Two Page Document</div>"
		Select Case pdf.PageCount
			Case 1
				' Apply watermark for one-page document
				pdf.ApplyWatermark(watermarkHtmlOnePage)
			Case 2
				' Apply watermark for two-page documents
				pdf.ApplyWatermark(watermarkHtmlTwoPage)
			Case Else
				' Apply a default watermark for other cases
				pdf.ApplyWatermark("<div style='color:green;'>Multiple Page Document</div>")
		End Select
		' Save the watermarked PDF
		pdf.SaveAs("watermarked.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

以下是一頁的輸出 PDF 檔案:

C# Case Statement (How it Works For Developers):圖 2 - 輸出

結論

在本教程中,我們探討了 C# 中的 switch case 語句,這是程式設計中決策的基本形式。 我們從了解它的基本結構開始,並與傳統的 if-else 語句進行比較,強調它在可讀性和簡單處理多重條件方面的優勢。

我們建立了簡單的 switch case,使用預設 case 處理各種情況,並探討 switch 表達式等進階功能。 透過一個整合 IronPDF 進行動態 PDF 處理的範例,說明 switch 語句在現實世界中的應用,展示 switch 語句如何成為程式設計師工具包中的重要工具。

IronPdf 提供免費試用功能探索,讓您探索其特色和功能。 若要持續使用並存取其全套工具,IronPDF 授權起始價格極具競爭力,可為您的 C# PDF 處理需求提供全面的解決方案。

常見問題解答

如何在 C# 中使用切換語句來管理 PDF 處理?

您可以使用切換語句來管理 PDF 處理,方法是使用 IronPDF 之類的函式庫,根據條件(例如頁數或文件類型)執行不同的 PDF 作業。

C# 中的 switch 語句與 switch 表達式有何差異?

switch 語句提供了一種結構化的方式來處理多個條件,並使用 break 語句來防止掉線,而 switch 表達式則更為簡潔,會回傳一個值,並且不需要 break 語句。

為什麼 C# switch 語句中的預設 case 很重要?

預設大小寫至關重要,因為它能確保優雅地處理意外值,在沒有大小寫符合表達式時提供後備動作,防止出錯。

切換表達式如何增強 C# 程式碼的可讀性?

Switch 表達式透過為條件分支提供簡潔的語法來增強程式碼的可讀性,讓開發人員可以更精簡的形式來表達邏輯,使程式碼更容易理解和維護。

C# 應用程式中的錯誤處理可以使用 switch 語句嗎?

是的,switch 語句可以用於錯誤處理,根據錯誤代碼或條件將程式導向特定的錯誤處理例程,從而提高 C# 應用程式的穩健性。

在 IronPDF 中使用 switch 語句的實例是什麼?

一個實例是使用切換語句,根據 PDF 文件的頁數或其他條件,將不同的水印套用到 PDF 文件上,並利用 IronPDF 來完成 PDF 的操作任務。

IronPDF 如何促進基於切換器的 PDF 操作?

IronPDF 提供了一套強大的工具和方法,可以有條件地使用切換語句觸發 PDF 的轉換、編輯和渲染等任務,從而促進了基於切換的 PDF 操作。

在 PDF 處理中,switch 語句有哪些常見的使用情況?

常見用例包括根據文件元資料套用不同的處理規則,例如根據文件類型或內容套用特定格式或轉換。

IronPDF 如何協助使用 switch 語句建立可閱讀、可維護的程式碼?

IronPdf 提供全面的 PDF 操作方法,這些方法可以使用切換語句進行組織,由於其結構化的邏輯,因此編寫出的程式碼既具有可讀性,又具有可維護性。

在決策過程中,switch 語句比 if-else 區塊有哪些優勢?

與冗長的 if-else 鏈相比,Switch 語句提供了更有條理、更不易出錯的結構來處理多個離散條件,提高了程式碼的清晰度,並降低了出錯的可能性。

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

Jacob Mellor 是 Iron Software 的首席技術官,作為 C# PDF 技術的先鋒工程師。作為 Iron Software 核心代碼的原作者,他自開始以來塑造了公司產品架構,與 CEO Cameron Rimington 一起將其轉變為一家擁有超過 50 名員工的公司,為 NASA、特斯拉 和 全世界政府機構服務。

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

他的旗艦產品 IronPDF & Iron Suite .NET 庫在全球 NuGet 被安裝超過 3000 萬次,其基礎代碼繼續為世界各地的開發工具提供動力。擁有 25 年的商業經驗和 41 年的編碼專業知識,Jacob 仍專注於推動企業級 C#、Java 及 Python PDF 技術的創新,同時指導新一代技術領袖。