.NET 帮助

C# 枚举(开发人员的工作原理)

发布 2024年三月26日
分享:

枚举是枚举的简称,它是一种强大的功能,使开发人员能够建立一组命名常量。这些常量通过为值提供有意义的名称,使代码更具可读性和可维护性。在本文中,我们将通过各种示例和解释来探讨 C# 中枚举的基础和高级概念。我们的目标是提供对枚举的全面理解,以及如何在您的 C# 应用程序中有效地使用枚举。 IronPDF 库.

C&num 中的枚举简介;

枚举是 C# 中的一种值类型,可使变量成为一组预定义的常量,每个常量被称为一个枚举成员。枚举关键字用于声明枚举类型,提供了一种在单个名称下分组常量值的方法。枚举提高了代码的可读性,减少了因传递错误值而导致的错误。

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

在上述代码中,Season 是一个枚举类型,有四个成员:春天、夏天、秋天和冬天。通过定义这个枚举,我们现在可以创建 Season 类型的变量,这些变量只能保存这四个值中的一个。

枚举的基本类型

了解枚举成员的整数值

默认情况下,C# 中枚举的底层类型是 int,即底层积分类型,枚举成员的整数值从 0 开始。您也可以将枚举的底层类型定义为任何其他积分类型。

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 值。

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

在这里,autumnInt 的值为 4,对应于Season枚举中的Autumn。反过来,当把整数 4 转换回一个 Season 时,season 将被设置为 Autumn

使用枚举方法

C# 提供了几种处理枚举的方法,如 Enum.GetName(), Enum.GetNames(), Enum.GetValue()Enum.GetValues(),用于访问与每个枚举成员相关的 int 常量。

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 枚举所有成员的名称。这种方法对于遍历枚举的所有可能值或在字符串表示法和枚举值之间进行转换非常有用。

为枚举成员指定特定值

您可以为枚举成员指定特定的整数值,以明确控制其数值。

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 状态代码)非常有用。

使用枚举作为位标志

通过使用 [旗帜] 属性,可以将枚举定义为一组位标志。这样就可以在一个枚举变量中存储各种值的组合。

[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 枚举,就可以使用比特 OR 运算符组合不同的权限。

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

这将把 myPermissions 设置为 ReadWrite 权限的组合。

枚举和开关语句

枚举与 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#

这段代码将打印 "现在是夏天",因为 season 变量已设置为 Season.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)
VB   C#

这段代码将字符串 "Winter "转换为相应的枚举值 Season.Winter

在 C&num 中将 IronPDF 与枚举集成;

IronPDF 是.NET 应用程序的 PDF 库,可帮助开发人员轻松创建、编辑和处理 PDF 文档。这个功能强大的库在需要动态生成 PDF(如生成报告或发票)的情况下尤其有用。在本节中,我们将探讨如何将 IronPDF 与 C# 枚举集成,以实现 PDF 生成我们还将介绍 IronPDF 在项目中的安装过程。

安装 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
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#

该呼叫会生成一份 PDF 文件,名为 WinterSalesReport.pdf,其中包括冬季的销售报告。

C# 枚举(如何为开发人员工作):图 3 - 代码示例中使用 IronPDF 的 PDF 输出示例

结论

C# 中的枚举提供了一种类型安全的方法来处理相关命名常量集。枚举增强了代码的可读性,减少了错误,使代码组织更加简洁。通过用一个有意义的名称对相关常量值进行分组,枚举使代码更易于理解和维护。

将 IronPDF 与 C# 中的枚举集成,可以根据枚举类型动态生成 PDF 文档。IronPDF 提供了一个 免费试用 从 $749 开始,提供一系列选项以适应不同的项目需求和规模。

< 前一页
C# 参数(开发人员了解其工作原理)
下一步 >
Dotnet NuGet(对开发人员的工作原理)

准备开始了吗? 版本: 2024.10 刚刚发布

免费NuGet下载 总下载量: 11,108,738 查看许可证 >