跳過到頁腳內容
.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;
}
$vbLabelText   $csharpLabel
  • switch (variable)指定要評估的變數或表達式。
  • case value1這些是您檢查變數的不同值或條件。
  • break當匹配的case被執行時,這個關鍵字用來退出switch區塊。
  • default語句:如果沒有指定的case匹配變數,則執行此區塊。

理解Break語句

在switch中,break語句很關鍵。 它防止了"落通"行為,即使匹配的條件已經達成,執行仍會轉到後續的case。 每個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;
}
$vbLabelText   $csharpLabel

在此範例中,程式將輸出"Three",因為數字匹配case 3。

Default Case的角色

理解Switch區塊中的Default

在switch語句中,default case扮演著重要角色。 它作為全局運行選項,當沒有指定的case標籤與switch表達式的值匹配時執行。 雖然它是可選的,但包括default case是處理意外或未知值的良好做法。

如何和何時使用Default語句

當您想在所有特定case均未匹配時執行代碼區塊時,會使用default case。 它確保了switch語句始終具有定義的行為,無論輸入如何。 default case使用default關鍵字聲明,後面接分號。

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

default case可以放在switch區塊內的任何地方,但通常放在最後,以提高可讀性。

範例:具有Default 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);
$vbLabelText   $csharpLabel

在此範例中,如果day的值不是1到7,那麼將執行default case,並將dayName設定為"Invalid day"。

Default Case的最佳實踐

  • 總是包括Default:即使您認為您已經涵蓋了所有可能的case,也要包括default case來處理無法預見的值。
  • 有意義的行動:使用default case執行有意義的行動,如記錄錯誤、設置默認值或通知使用者未知的值。

進階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
};
$vbLabelText   $csharpLabel

下劃線符號(_)在switch表達式中表示default case,功能與傳統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);
$vbLabelText   $csharpLabel

在此範例中,switch表達式簡潔地對溫度進行分類,default case (_) 涵蓋所有未由其他case匹配的情境。

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"
};
$vbLabelText   $csharpLabel

C# Switch語句與Switch表達式

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

Integrating Switch Statements with IronPDF in C#

C# Case Statement(開發者的運作方式):圖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");
    }
}
$vbLabelText   $csharpLabel

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

讓我們考慮一個場景,您有一個PDF文件,並想<由於頁數不同應用不同的水印/a>。 這是使用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");
    }
}
$vbLabelText   $csharpLabel

這是一頁的輸出PDF文件:

C# Case Statement(開發者的運作方式):圖2 - 輸出

結論

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

我們創建了簡單的switch case,處理了具有default case的各種情境,並探索了進階功能如switch表達式。 通過與IronPDF整合進行動態PDF處理的範例,展示了switch語句在程式設計中是一個有價值的工具。

IronPDF提供功能探索的免費試用,讓您可以探索其功能和特性。 為了持續使用和獲取其完整工具套件,IronPDF授權以合理的價格模式開始,提供對您在C#中的所有PDF處理需求的全面解決方案。

常見問題解答

如何使用 switch 語句來管理 C# 中的 PDF 處理?

您可以使用 switch 語句來根據條件(例如頁數或文檔類型)執行不同的 PDF 操作,使用像 IronPDF 這樣的庫。

C# 中的 switch 語句和 switch 表達式有什麼區別?

switch 語句提供了一種結構化的方法來處理多個條件,通過 break 語句來防止穿透,而 switch 表達式更簡潔,返回一個值,並消除了使用 break 語句的需要。

為什麼默認情況在 C# switch 語句中很重要?

默認情況至關重要,因為它確保意外值被優雅地處理,通過提供回退操作防止錯誤,當沒有情況匹配表達式時。

switch 表達式如何提高 C# 中的代碼可讀性?

switch 表達式通過提供一種簡潔的條件分支語法來提高代碼可讀性,使開發人員能夠以更緊湊的形式表達邏輯,這使得代碼更易於理解和維護。

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

是的,switch 語句可以通過根據錯誤代碼或條件將程序導向特定的錯誤處理例程來改善 C# 應用程序的健壯性。

使用 IronPDF 的 switch 語句的一個實際例子是什麼?

一個實際例子是使用 switch 語句根據 PDF 文檔的頁數或其他標準應用不同的水印,利用 IronPDF 進行 PDF 操作。

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

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

使用 switch 語句進行 PDF 處理的常見用例有哪些?

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

IronPDF 如何通過 switch 語句協助創建可讀和可維護的代碼?

IronPDF 通過提供全面的 PDF 操作方法來協助,這些方法可以通過 switch 語句組織,從而產生具有結構化邏輯的可讀和可維護的代碼。

switch 語句在決策中比 if-else 塊有什麼優勢?

switch 語句提供了一種更組織化和不易出錯的結構來處理多個離散的條件,增強了代碼的清晰性,並降低了錯誤的可能性,與冗長的 if-else 鏈相比。

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

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me