C# 枚举2025年9月6日 | 阅读 9 分钟 在 C# 编程语言中,Enum 也被称为枚举。它用于存储一组命名的常量,例如季节、日期、月份、大小等。枚举常量也称为枚举数。C# 中的枚举可以使用 enum 关键字在类或结构内部或外部声明。它使我们能够创建相关符号名称的组,这些符号名称代表代码中的不同状态或选项。 枚举常量具有从 0 开始的默认值,每个数字递增 1。但是,如果需要,我们可以显式分配自定义值。 例如,我们可以创建一个名为 Seasons 的枚举,例如 Winter、Spring、Summer 和 Fall,而不是使用 0、1、2、3 等来表示季节。 枚举语法它具有以下语法: 在这个语法中,
C# 枚举示例让我们看一个例子来说明 C# 编程中的枚举。 示例编译并运行输出 WINTER = 0 SUMMER = 2 说明 在此示例中,我们声明了一个名为 Season 的枚举,其中包含四个值。在 Main 方法中,它将两个枚举成员(WINTER 和 SUMMER)转换为整数并输出它们各自的值。默认情况下,WINTER 为 0,SPRING 为 1,SUMMER 为 2,FALL 为 3,因此它打印 WINTER 的 0 和 SUMMER 的 2。 C# 枚举的特性C# 枚举有几个重要的特性。其中一些如下:
类内部的枚举在 C# 编程中,枚举也可以定义在类内部。让我们看一个例子来说明类内部的枚举和更改索引。 示例编译并运行输出 WINTER = 10 SUMMER = 12 说明 在此示例中,我们声明了一个名为 Season 的枚举,其中 WINTER 为 10,因此后续成员会自动递增。在 main() 函数中,它将 WINTER 和 SUMMER 转换为整数并打印它们。输出将是 WINTER = 10 和 SUMMER = 12。 C# 枚举示例(在类内部声明)让我们看一个在 C# 类中声明的星期的示例。 示例编译并运行输出 Sun = 0 Mon = 1 Sat = 6 说明 在此示例中,我们声明了一个名为 Days 的枚举,其中包含一周中的日期,默认值为 0。在 main() 函数中,它将 Sun、Mon 和 Sat 转换为它们的整数值并输出它们。输出将是:Sun = 0, Mon = 1, Sat = 6。 枚举方法和属性C# 枚举有几个方法和属性。其中一些如下: 1) C# 中的 GetValues在 C# 编程中,Enum.GetValues 用于检索定义在枚举类型中的所有值的数组。 C# 枚举示例:使用 getValues() 访问所有值 让我们看一个例子来说明 C# 枚举值,以使用 getValues() 函数访问所有值。 示例编译并运行输出 Sun Mon Tue Wed Thu Fri Sat 2) C# 中的 GetNames()在 C# 编程中,Enum.GetNames() 方法用于检索定义在枚举类型中的所有名称的数组。 C# 枚举示例:使用 getNames() 遍历所有值 让我们看一个例子来说明 C# 枚举值,以使用 getValues() 函数遍历所有值。 示例编译并运行输出 Sun Mon Tue Wed Thu Fri Sat 说明 在此示例中,我们使用了从 Sun 到 Sat 的 Days 枚举。在 main() 函数中,它使用 Enum.GetNames() 检索所有枚举名称作为字符串,并使用 foreach 循环单独打印每个名称,显示一周中的所有日期。 3) C# 中的 IsDefined()在 C# 编程中,此方法用于检查给定的值或名称是否存在于指定的枚举中。它返回布尔结果。 C# Enum.IsDefined() 示例 让我们看一个例子来说明 C# 中的 enum.IsDefined() 函数。 示例编译并运行输出 True False 转换枚举在 C# 编程中,枚举是类型化常量,但它们可以显式转换为其底层数字类型(如 int、byte 等)以及从这些类型转换回来。我们还可以将枚举转换为字符串,并将字符串解析为枚举值。当我们处理 UI、文件或数据库,需要显示或存储枚举名称或值时,这非常有用。 C# 转换枚举的示例 让我们看一个在 C# 中转换枚举的示例。 示例编译并运行输出 Integer value: 1 Enum value: Off String value: On Parsed enum: Off 说明 在此示例中,我们定义了一个值为 Off=0 和 On=1 的 Status 枚举。它将枚举成员转换为其整数值,将整数转换回枚举,使用 ToString() 函数将枚举转换为字符串,并使用 Enum.Parse() 函数将字符串解析为相应的枚举值。 Switch 语句中的枚举在 C# 编程中,枚举与 switch 语句配合得非常好。在 switch 语句中使用枚举允许我们根据枚举值执行不同的操作。它有助于提高代码的可读性和可维护性,并且没有硬编码的字面量。 语法它具有以下语法: 使用 Switch 语句的 C# 枚举示例让我们看一个例子来说明 C# 中使用 switch 语句的枚举。 示例编译并运行输出 Midweek day 说明 在此示例中,我们声明了一个包含一周中日期的 Day 枚举。在 main() 函数中,它将 today 初始化为 Wed,并使用 switch 测试该值。它打印“Midweek day”,因为该值为 Day.Wed。 指定 C# 中的枚举类型C# 中枚举的底层类型是 int,它将每个成员表示为 32 位有符号整数。我们还可以指定其他整数类型,如 byte、sbyte、short、ushort、uint、long 或 ulong,以管理内存消耗或适应外部数据格式。 语法 它具有以下语法: 指定 C# 枚举类型的示例让我们看一个在 C# 中指定枚举类型的示例。 示例编译并运行输出 Temperature Level: Normal Underlying Value: 0 Casted from number: Extreme 说明 在此示例中,我们定义了一个以 short 为底层类型的 TemperatureLevel 枚举,并为温度级别分配了特定的数值。在 main() 函数中,它将 Normal 分配给一个级别,并打印枚举的名称及其值。之后,它将数字 50 转换为枚举,这等同于 Extreme 的值,并打印出来。 [Flags] 属性用于位枚举在 C# 中,在枚举上使用 [Flags] 属性允许您表示位字段的集合。它允许使用按位运算符组合枚举值,这对于存在许多可以同时激活的选择、权限或状态的情况非常有用。 用于位枚举的 [Flags] 属性的 C# 示例让我们看一个例子来说明 C# 中位枚举的 flag 属性。 示例编译并运行输出 Assigned Rights: Read, Write Has Write Permission: True Updated Rights: Read, Write, Execute After Removing Read: Write, Execute 说明 在此示例中,我们使用 [Flags] 属性声明了一个 A 枚举,以便可以使用按位运算“组合”多个值。在 main() 函数中,权限被分配为 Read | Write,输出为 Read, Write。它使用 HasFlag 查询 Write 是否存在。之后,添加了 execute,最终通过按位 AND 和 NOT 排除 read。最后,它查询是否还有剩余权限,并相应地打印。 结论总之,C# 枚举提供了一种类型安全且美观的方式来表示固定数量的命名常量。它们提高了可读性,消除了硬编码值引起的错误,并且与 switch 等控制语句非常契合。通过底层类型、[Flags] 等属性应用以及扩展方法,枚举可以得到进一步的丰富,变得更加灵活和强大。 C# 枚举常见问题解答1) C# 中的枚举是什么? 枚举是 C# 中的一种值类型,它定义了一组命名的常量。使用枚举可以提高代码的可读性,并简化与相关值集的工作。 2) C# 中枚举的默认底层类型是什么? 枚举的默认底层类型是 int。但是,我们可以显式使用其他整数类型,如 byte、short 或 long。 3) 我们可以为枚举成员分配特定值吗? 是的,我们可以为枚举成员分配自定义数值。当与需要特定值的外部系统或 API 交互时,此功能特别有用。 4) 枚举是否可以包含重复值? 是的,多个名称可以具有相同的值。但是,当从值返回到名称时,只返回第一个名称。 5) 枚举是引用类型还是值类型? 枚举是值类型,并且派生自 System.Enum。它们像所有其他值类型一样占用内存并具有赋值行为。 下一主题C# 属性 |
我们请求您订阅我们的新闻通讯以获取最新更新。