跳至頁尾內容
開發者更新

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塊。
  • default語句: 如果沒有指定的情況與變數匹配,則執行此塊。

了解Break語句

switch中的break語句很重要。 它可以防止"滾動"行為,即使匹配的條件已經被滿足,執行仍然會移動到後續的情況。 每個情況塊通常以break語句結束,以確保僅執行匹配情況下的程式碼。

比較Switch語句和If-Else語句

while-else語句的結構涉及檢查條件,如果條件為真則執行一段程式碼,而switch語句則是比較單個變數或表達式與多個可能的值。 當您有許多需要檢查的條件或情況模式時,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

在這個範例中,程式將列印"Three"作為輸出,因為數字匹配了情況3。

Default情況的角色

理解Switch塊中的Default情況

在switch語句中,default情況發揮著關鍵作用。 當沒有指定的情況標籤與switch表達式的值匹配時,它作為一個捕捉所有的選項執行。 雖然是可選的,但包括一個default情況是處理意外或未知值的好習慣。

如何及何時使用Default語句

當您想要在沒有具體情況匹配時執行一段程式碼塊時,使用default情況。 它確保switch語句始終具有明確的行為,無論輸入為何。 default情況是使用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

default情況可以放在switch塊的任何地方,但通常放在末尾,以便閱讀。

範例:具有Default情況的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

在這個範例中,如果dayName設置為"無效的日子"。

Default情況的最佳實踐

  • 總是包括一個Default:即使您認為您已經覆蓋了所有可能的情況,也要包括一個default情況以處理不可預見的值。
  • 有意義的行動:使用default情況來執行有意義的行動,比如記錄錯誤、設置預設值或通知使用者未知的值。

進階Switch功能

Introduction to Switch Expressions in C

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

Switch表達式的語法

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表達式中表示default情況,功能類似於傳統switch語句中的default塊。

範例:使用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表達式簡潔地將溫度分類,其中default情況(_)涵蓋了任何未由其他情況匹配的場景。

Switch表達式模式匹配

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語句與Switch表達式

  • C# Switch語句:傳統上用於根據變數的值執行不同的程式碼塊。 它要求為每個情況設置一個break語句。
  • Switch表達式:在C# 8.0中引入,這提供了一種更簡潔的語法,通常用於在需要根據條件返回值時使用。

Integrating Switch Statements with IronPDF in C

C# Case語句(如何為開發者工作):圖1 - IronPDF

探索IronPDF特性是一個.NET PDF程式庫,用於建立、編輯和處理PDF文件。 當與C# switch語句或表達式結合使用時,它成為處理各種基於特定條件的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# switch語句來實現這一目標:

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語句(如何為開發者工作):圖2 - 輸出

結論

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

我們建立了簡單的switch情況,通過default情況處理了各種場景,並探討了像switch表達式這樣的進階功能。 switch語句的實際應用通過一個整合IronPDF進行動態PDF處理的範例得到演示,展示了switch語句如何成為程式員工具中的寶貴工具。

IronPDF提供了免費試用來探索功能,允許您探索其功能和特性。 為了繼續使用並存取其全套工具,IronPDF授權從具競爭力的定價模式開始,提供了一個綜合解決方案,以滿足您在C#中的所有PDF處理需求。

常見問題

如何使用switch陳述式來管理 C# 中的 PDF 處理?

您可以使用switch陳述式來管理 PDF 處理,透過根據條件(如頁面數或文件型別)執行不同的 PDF 操作,使用像 IronPDF 這樣的程式庫。

C# 中的switch陳述式和switch表達式之間有什麼區別?

switch陳述式提供了一種結構化方式來處理多個條件,並使用break陳述式來防止貫穿,而switch表達式則更精簡,返回一個值,並消除了對break陳述式的需求。

為什麼在C#的switch陳述式中,default案例很重要?

default案例至關重要,因為它確保了意外值得到妥善處理,從而在沒有匹配的案例時提供回退動作,以防止錯誤。

如何增強 C# 程式碼的可讀性?

switch 表達式透過提供一個簡明的語法來增強程式碼的可讀性,允許開發者以更精簡的形式表達邏輯,使程式碼更易於理解和維護。

switch陳述式可以用於 C# 應用程式中的錯誤處理嗎?

是的,switch陳述式可以用於錯誤處理,透過根據錯誤程式碼或條件將程式導向到特定的錯誤處理例程,從而提高 C# 應用程式的健壯性。

IronPDF 可以使用switch陳述式的實用範例是什麼?

一個實用範例是使用switch陳述式根據頁面數或其他標準在 PDF 文件上應用不同的水印,利用 IronPDF 進行 PDF 操作任務。

IronPDF 如何促進基於switch的 PDF 運行操作?

IronPDF 透過提供一套強大的工具和方法來促進基於switch的 PDF 操作,這些方法可以在switch陳述式中有條件地觸發,以進行如轉換、編輯和渲染 PDF 的任務。

在 PDF 處理中,switch 陳述式的常見用例有哪些?

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

IronPDF 如何協助建立易讀及可維護的switch陳述式程式碼?

IronPDF 透過提供全面的 PDF 操作方法來協助,這些方法可以利用switch陳述式進行組織,使程式碼因其結構化邏輯而既易讀又可維護。

switch陳述式在決策中比if-else塊有什麼優勢?

switch陳述式提供了一種更有組織且更不易錯的結構來處理多個離散條件,增強了程式碼的清晰度,並減少了與冗長的if-else鏈相比錯誤的可能性。

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

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

Jacob擁有曼徹斯特大學的土木工程一等榮譽學士學位(BEng),於1998-2001年之間獲得。在1999年於倫敦創辦他的第一家軟體公司並於2005年建立了他的第一批.NET元組件後,他專注於解決Microsoft生態系統中的複雜問題。

他的旗艦IronPDF和Iron Suite .NET程式庫在全球獲得了超過3000萬次NuGet安裝依據,他的基礎程式碼基繼續支援著世界各地開發者使用的工具。擁有25年的商業經驗和41年的程式設計專業知識,他仍專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron 支援團隊

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