.NET 帮助

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

发布 2024年三月26日
分享:

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

C# 中的枚举介绍;

枚举是 C# 中的一种值类型,可使变量成为一组预定义的常量,每个常量被称为一个枚举成员。 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 是一个枚举类型,有四个成员:春季、夏季、秋季和冬季。 通过定义这个枚举,我们现在可以创建 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 是一个枚举,此处称为枚举名,其基础类型为字节。 春天 "被明确赋值为 1,使其成为默认值,而 "夏天"、"秋天 "和 "冬天 "则根据其顺序被赋予相应的值。

在代码中使用枚举

要使用枚举,只需使用点语法声明一个指定枚举类型的变量,并为其分配一个枚举值,例如枚举声明中定义的不同值之一。

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 转换为季节时,季节将被设置为秋季

使用枚举方法

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

将 IronPdf 与 C&num 中的枚举集成;

IronPDF 动态文档生成 PDF 库PDF 是 .NET 应用程序的 PDF 库,可帮助开发人员轻松创建、编辑和处理 PDF 文档。 这个功能强大的库在需要动态生成 PDF(如生成报告或发票)的场景中特别有用。 在本节中,我们将探讨如何将 IronPdf 与 C# 枚举集成,以实现在 .NET 中从 HTML 创建 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 提供了一个免费试用其全面的 PDF 工具此外,还要提供一系列选项,以适应不同的项目需求和规模。

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

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

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