.NET 幫助

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

發佈 2024年3月26日
分享:

枚舉(Enums,enumerations 的縮寫)是一個強大的功能,使開發者能夠建立一組具名常數。這些常數通過為數值提供有意義的名稱,使代碼更易讀和更易維護。在本文中,我們將通過各種例子和解釋來探討 C# 中枚舉的基礎和進階概念。我們的目標是提供對枚舉的全面理解,以及如何在您的 C# 應用程序中有效使用它們。 IronPDF 庫.

C# 中的 Enum 介紹

Enum 是 C# 中的值類型,使變量能夠成為一組預定義常數,每個常數稱為 Enum 成員。使用 enum 關鍵字聲明枚舉類型,提供一種將常數值分組為單一名稱的方法。Enum 提高了代碼的可讀性,並減少了由傳遞錯誤值引起的錯誤。

enum Season { Spring, Summer, Autumn, Winter }
enum Season { Spring, Summer, Autumn, Winter }
Friend Enum Season
	Spring
	Summer
	Autumn
	Winter
End Enum
VB   C#

在上述程式碼中,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
VB   C#

在此範例中,Season 是一個列舉,這裡稱為列舉名稱,其底層類型為字節。Spring 明確指定為值1,使其成為默認值,而 Summer、Autumn 和 Winter 根據它們的順序被賦予相應的值。

在您的程式碼中使用列舉

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

Season currentSeason = Season.Autumn;
Season currentSeason = Season.Autumn;
Dim currentSeason As Season = Season.Autumn
VB   C#

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

在枚舉值和整數間轉換

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

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)
VB   C#

在這裡,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
VB   C#

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
VB   C#

在此範例中,ErrorCode 是一個帶有自定義整數值的枚舉。這對於預定義的數字代碼(例如 HTTP 狀態代碼)非常有用。

使用枚举作為位标志

通过使用[標誌]屬性,您可以將enum定義為一組位元標誌。這允許您在單個enum變數中儲存多個值的組合。

[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
VB   C#

使用上面定義的 Permissions 列舉,可以使用位元或運算符號結合不同的權限。

Permissions myPermissions = Permissions.Read 
 Permissions.Write;
Permissions myPermissions = Permissions.Read 
 Permissions.Write;
Dim myPermissions As Permissions = Permissions.Read Permissions.Write
VB   C#

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

枚舉和 Switch 語句

枚舉與 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
VB   C#

這段程式碼將會印出「It's summer.」,因為 season 變數被設定為 Season.Summer

將字串解析為 Enum

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)
VB   C#

這段代碼將字串 "Winter" 轉換為其對應的枚舉值 Season.Winter

在C#中與枚舉整合IronPDF

IronPDF 是一個用於 .NET 應用程式的 PDF 庫,幫助開發人員輕鬆創建、編輯和操作 PDF 文件。這個功能強大的庫在需要動態生成 PDF 的場景中特別有用,例如生成報告或發票。在本節中,我們將探討如何將 IronPDF 與 C# 枚舉集成。 PDF 生成, 我們還會介紹在您的專案中安裝 IronPDF 的過程。

安裝 IronPDF

使用 NuGet 套件管理控制台安裝 IronPDF 非常簡單。在 Visual Studio 中打開套件管理控制台,並輸入以下命令:

Install-Package IronPdf

此指令將在我們的專案中安裝 IronPDF。

另一種方法是在您的專案中使用 Visual Studio 安裝 IronPDF。在 Visual Studio 中,右鍵點擊 Solution Explorer,然後點擊 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
VB   C#

接下來,我們將編寫一個根據所選季節生成 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
VB   C#

在此範例中,我們定義了一個方法 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
VB   C#

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

C# Enums(開發者如何使用):圖3 - 使用 IronPDF 從代碼範例生成的 PDF 輸出示例

結論

C# 中的列舉提供了一種類型安全的方式來處理一組相關的命名常量。它們增強了代碼的可讀性,減少了錯誤,並促進了更整潔的代碼組織。通過將相關的常量值分組到有意義的名稱下,列舉使您的代碼更容易理解和維護。

將 IronPDF 與 C# 中的列舉集成允許根據列舉類型動態生成 PDF 文檔。IronPDF 提供了 免費試用 從 $749 開始,提供一系列適合不同項目需求和規模的選項。

< 上一頁
C# 參數(它是如何為開發人員工作的)
下一個 >
Dotnet NuGet(開發人員如何使用)

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >