.NET 幫助

C# 列舉 (開發人員如何使用)

枚舉(Enums),是列舉的縮寫,是一種強大的功能,使開發人員能夠建立一組具名常數。 這些常數透過為值提供有意義的名稱,使程式碼更具可讀性和可維護性。 在本文中,我們將通過各種示例和解釋來探討 C# 中枚舉的基礎和高級概念。 我們的目標是提供對枚舉的全面了解,以及如何在 C# 應用程式中使用 IronPDF library for PDF generation in .NET 有效地使用它們。

在C#中引入Enum

枚舉是 C# 中的一種值類型,它允許變量成為一組預定義常數的集合,每個常數稱為枚舉成員。 enum 關鍵字用於宣告列舉型別,提供了一種將常數值分組在一個名稱下的方式。 枚舉可以提高代碼的可讀性,並減少由於傳遞錯誤值而導致的錯誤。

enum Season { Spring, Summer, Autumn, Winter }
enum Season { Spring, Summer, Autumn, Winter }
Friend Enum Season
	Spring
	Summer
	Autumn
	Winter
End Enum
$vbLabelText   $csharpLabel

在上述程式碼中,Season 是一個列舉型別,包含四個成員:Spring、Summer、Autumn 和 Winter。 通過定義此列舉,我們現在可以創建Season類型的變量,這些變量只能包含這四個值之一。

枚舉的底層類型

瞭解列舉成員的整數值

在預設情況下,C# 中枚舉的底層類型是 int,即稱為底層整數類型,枚舉成員的整數值從 0 開始。除非明確指定,否則每個成員的整數值會從前一成員增加 1。 您也可以將列舉的基礎類型定義為其他整數類型。

enum Season : byte { Spring = 1, Summer, Autumn = 4, Winter }
enum Season : byte { Spring = 1, Summer, Autumn = 4, Winter }
Friend Enum Season As Byte
	Spring = 1
	Summer
	Autumn = 4
	Winter
End Enum
$vbLabelText   $csharpLabel

在此範例中,Season 是枚舉,在這裡被稱為枚舉名稱,其底層類型為 byte。 Spring 被明確指定為值 1,作為預設值,而 Summer、Autumn 和 Winter 根據它們的順序被指定相應的值。

在程式碼中使用列舉型別

要使用枚舉,只需宣告指定枚舉類型的變數,並使用點語法將其賦值為枚舉中的一個值,如在枚舉宣告中定義的不同值之一。

Season currentSeason = Season.Autumn;
Season currentSeason = Season.Autumn;
Dim currentSeason As Season = Season.Autumn
$vbLabelText   $csharpLabel

這行程式碼創建了一個類型為Season的變數currentSeason,並將其賦值為Autumn。 這清楚表明currentSeason只能持有一個有效的Season值。

在 Enum 值和整數之間轉換

您可以使用給定的整數值將枚舉值轉換為其對應的整數值,反之亦然。 當您需要以數字形式儲存或傳輸資料時,這非常有用。

int autumnInt = (int)Season.Autumn;
Season season = (Season)4;
int autumnInt = (int)Season.Autumn;
Season season = (Season)4;
Imports System

Dim autumnInt As Integer = CInt(Math.Truncate(Season.Autumn))
Dim season As Season = CType(4, Season)
$vbLabelText   $csharpLabel

在這裡,autumnInt 具有值 4,對應於 Season 列舉中的 Autumn。 相反地,將整數 4 轉換回 Season 時,season 將被設置為 Autumn

使用列舉方法

C#提供了幾種用於處理枚舉的方法,如Enum.GetName()Enum.GetNames()Enum.GetValue()Enum.GetValues(),這些方法對於訪問與每個枚舉成員相關的整數常量非常有用。

string[] names = Enum.GetNames(typeof(Season));
foreach (string name in names)
{
    Console.WriteLine(name);
}
string[] names = Enum.GetNames(typeof(Season));
foreach (string name in names)
{
    Console.WriteLine(name);
}
Dim names() As String = System.Enum.GetNames(GetType(Season))
For Each name As String In names
	Console.WriteLine(name)
Next name
$vbLabelText   $csharpLabel

C# 枚舉(開發人員如何使用):圖1 - 與 Season 枚舉相關的每個值的控制台輸出

此代碼片段列印出Season列舉的所有成員名稱。 這些方法對於遍歷枚舉的所有可能值或在字串表示和枚舉值之間進行轉換非常有用。

將特定值賦予枚舉成員

您可以為枚舉成員分配特定的整數值,以明確控制其數值。

enum ErrorCode : int { None = 0, NotFound = 404, Unauthorized = 401 }
enum ErrorCode : int { None = 0, NotFound = 404, Unauthorized = 401 }
Friend Enum ErrorCode As Integer
	None = 0
	NotFound = 404
	Unauthorized = 401
End Enum
$vbLabelText   $csharpLabel

在此範例中,ErrorCode 是一個 enum,為每個成員分配了自定義的整數值。 這對於預定義的數字代碼很有用,例如 HTTP 狀態代碼。

使用列舉作為位元標誌

通過使用[Flags]屬性,您可以將枚舉定義為一組位標誌。 這允許您在單個枚舉變量中存儲值的組合。

[Flags]
enum Permissions { None = 0, Read = 1, Write = 2, Execute = 4 }
[Flags]
enum Permissions { None = 0, Read = 1, Write = 2, Execute = 4 }
<Flags>
Friend Enum Permissions
	None = 0
	Read = 1
	Write = 2
	Execute = 4
End Enum
$vbLabelText   $csharpLabel

利用上面定義的 Permissions 列舉,您可以使用按位 OR 運算符結合不同的權限。

Permissions myPermissions = Permissions.Read 
 Permissions.Write;
Permissions myPermissions = Permissions.Read 
 Permissions.Write;
Dim myPermissions As Permissions = Permissions.Read Permissions.Write
$vbLabelText   $csharpLabel

這將myPermissions設置為讀取寫入權限的組合。

枚舉和切換語句

列舉與switch語句配合得非常好,允許您根據列舉的值執行不同的程式代碼區塊。

Season season = Season.Summer;
switch (season)
{
    case Season.Spring:
        Console.WriteLine("It's spring.");
        break;
    case Season.Summer:
        Console.WriteLine("It's summer.");
        break;
    case Season.Autumn:
        Console.WriteLine("It's autumn.");
        break;
    case Season.Winter:
        Console.WriteLine("It's winter.");
        break;
}
Season season = Season.Summer;
switch (season)
{
    case Season.Spring:
        Console.WriteLine("It's spring.");
        break;
    case Season.Summer:
        Console.WriteLine("It's summer.");
        break;
    case Season.Autumn:
        Console.WriteLine("It's autumn.");
        break;
    case Season.Winter:
        Console.WriteLine("It's winter.");
        break;
}
Dim season As Season = Season.Summer
Select Case season
	Case Season.Spring
		Console.WriteLine("It's spring.")
	Case Season.Summer
		Console.WriteLine("It's summer.")
	Case Season.Autumn
		Console.WriteLine("It's autumn.")
	Case Season.Winter
		Console.WriteLine("It's winter.")
End Select
$vbLabelText   $csharpLabel

由於season變數被設為Season.Summer,此代碼將打印「It’s summer.」。

解析字串為列舉型別

C# 允許您使用 Enum.Parse() 方法解析字串以獲取相應的枚舉值。

string input = "Winter";
Season season = (Season)Enum.Parse(typeof(Season), input);
string input = "Winter";
Season season = (Season)Enum.Parse(typeof(Season), input);
Dim input As String = "Winter"
Dim season As Season = DirectCast(System.Enum.Parse(GetType(Season), input), Season)
$vbLabelText   $csharpLabel

此程式碼將字串"Winter"轉換為其相應的列舉值Season.Winter

將 IronPDF 與 C# 中的枚舉整合

IronPDF PDF 庫用於動態文件生成 是一個針對 .NET 應用程式的 PDF 庫,可以幫助開發人員輕鬆創建、編輯和操作 PDF 文件。 這個強大的庫在需要動態 PDF 生成的情況中特別有用,例如生成報告或發票。 在本節中,我們將探討如何將IronPDF與C# enums整合以在.NET中從HTML創建PDF報告,並且也會涵蓋在您的專案中安裝IronPDF的過程。

使用 IronPDF,您可以將任何 HTML、URL 或網頁轉換成看起來完全像來源的 PDF。 這是一個生成發票、報告以及其他網頁內容的絕佳選擇。 準備好將HTML 轉換為 PDF了嗎? IronPDF讓一切變得輕而易舉。

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

使用 NuGet 套件管理器控制台安裝 IronPDF 非常容易。 在 Visual Studio 中打開套件管理員主控台並輸入以下命令:

Install-Package IronPdf

此命令將在我們的項目中安裝IronPDF。

另一種方法是使用 Visual Studio 在您的專案中安裝 IronPDF。 在 Visual Studio 中,右鍵單擊方案總管,然後點擊「NuGet 套件管理員」以管理方案。 然後,點擊左側的瀏覽標籤。接著,搜尋IronPDF,點擊安裝,並將其添加到您的專案中。

C# 列舉(其工作方式為開發人員):圖 2 - 透過 NuGet 套件管理器搜尋 "IronPDF" 來安裝 IronPDF

使用 IronPDF 與枚舉型別

我們來考慮一個情境,您想生成一個包含季節性銷售數據報告的 PDF 文件。 您可以使用枚舉來表示不同的季節,並使用IronPDF生成PDF報告。 首先,定義一個枚舉用於季節:

public enum Season
{
    Spring,
    Summer,
    Autumn,
    Winter
}
public enum Season
{
    Spring,
    Summer,
    Autumn,
    Winter
}
Public Enum Season
	Spring
	Summer
	Autumn
	Winter
End Enum
$vbLabelText   $csharpLabel

接下來,我們將撰寫一個方法,以選定的季節為基礎生成 PDF 報告。 此方法將使用 IronPDF 創建一個簡單的 PDF 文檔,概述給定季節的銷售數據。

using IronPdf;
public class SalesReportGenerator
{
    public static void GenerateSeasonalSalesReport(Season season)
    {
        IronPdf.License.LicenseKey = "License-Key";
        var Renderer = new IronPdf.ChromePdfRenderer();
        var htmlTemplate = $"<h1>Sales Report for {season}</h1><p>This section contains sales data for the {season} season.</p>";
        var pdf = Renderer.RenderHtmlAsPdf(htmlTemplate);
        var outputPath = $@"{season}SalesReport.pdf";
        pdf.SaveAs(outputPath);
        Console.WriteLine($"PDF report generated: {outputPath}");
    }
}
using IronPdf;
public class SalesReportGenerator
{
    public static void GenerateSeasonalSalesReport(Season season)
    {
        IronPdf.License.LicenseKey = "License-Key";
        var Renderer = new IronPdf.ChromePdfRenderer();
        var htmlTemplate = $"<h1>Sales Report for {season}</h1><p>This section contains sales data for the {season} season.</p>";
        var pdf = Renderer.RenderHtmlAsPdf(htmlTemplate);
        var outputPath = $@"{season}SalesReport.pdf";
        pdf.SaveAs(outputPath);
        Console.WriteLine($"PDF report generated: {outputPath}");
    }
}
Imports IronPdf
Public Class SalesReportGenerator
	Public Shared Sub GenerateSeasonalSalesReport(ByVal season As Season)
		IronPdf.License.LicenseKey = "License-Key"
		Dim Renderer = New IronPdf.ChromePdfRenderer()
		Dim htmlTemplate = $"<h1>Sales Report for {season}</h1><p>This section contains sales data for the {season} season.</p>"
		Dim pdf = Renderer.RenderHtmlAsPdf(htmlTemplate)
		Dim outputPath = $"{season}SalesReport.pdf"
		pdf.SaveAs(outputPath)
		Console.WriteLine($"PDF report generated: {outputPath}")
	End Sub
End Class
$vbLabelText   $csharpLabel

在此範例中,我們定義了一個方法GenerateSeasonalSalesReport,該方法將Season列舉作為參數。 它使用 IronPDF 的 ChromePdfRenderer 類來從包含季節名稱和銷售數據佔位文字的 HTML 字符串生成 PDF。 然後將 PDF 保存為包含季節名稱的文件名。

執行

要生成季節性銷售報告,請使用特定的季節調用GenerateSeasonalSalesReport方法:

static void Main(string [] args)
{
    SalesReportGenerator.GenerateSeasonalSalesReport(Season.Winter);
}
static void Main(string [] args)
{
    SalesReportGenerator.GenerateSeasonalSalesReport(Season.Winter);
}
Shared Sub Main(ByVal args() As String)
	SalesReportGenerator.GenerateSeasonalSalesReport(Season.Winter)
End Sub
$vbLabelText   $csharpLabel

此呼叫會生成一份名為WinterSalesReport.pdf的 PDF 文件,其中包含冬季的銷售報告。

C# 列舉(開發人員如何使用):圖 3 - 使用 IronPDF 的代碼範例生成的 PDF 輸出示例

結論

C# 中的枚舉提供了一種類型安全的方法來處理一組相關的命名常數。 它們增強了程式碼的可讀性,減少錯誤,並促進更清晰的程式碼組織。 通過將相關的常數值歸類在一個有意義的名稱下,枚舉使您的代碼更易於理解和維護。

將 IronPDF 與 C# 中的枚舉類型結合使用,使得能夠根據枚舉類型動態生成 PDF 文件。IronPDF 提供免費試用其全面的 PDF 工具,提供多種選項以滿足不同項目需求和規模。

Chipego
奇佩戈·卡林达
軟體工程師
Chipego 擁有天生的傾聽技能,這幫助他理解客戶問題,並提供智能解決方案。他在獲得信息技術理學學士學位後,于 2023 年加入 Iron Software 團隊。IronPDF 和 IronOCR 是 Chipego 專注的兩個產品,但隨著他每天找到新的方法來支持客戶,他對所有產品的了解也在不斷增長。他喜歡在 Iron Software 的協作生活,公司內的團隊成員從各自不同的經歷中共同努力,創造出有效的創新解決方案。當 Chipego 離開辦公桌時,他常常享受讀好書或踢足球的樂趣。
< 上一頁
C# 參數(它是如何為開發人員工作的)
下一個 >
Dotnet NuGet(開發人員如何使用)