🚦 一、枚举的核心特性
成员本质
枚举仅包含声明的成员常量,不可添加方法或属性。
所有成员隐式静态,无需实例化即可访问(如 TrafficLight.Green)。
访问权限
成员默认继承枚举类型的可访问性(如 public),禁止显式修饰符。
简化访问技巧(C# 6.0+)
使用 using static 指令省略类型名:
using static TrafficLight;
using static System.Console;WriteLine($"{Green}"); // 直接使用成员名
⚠️ 二、枚举的类型安全性
枚举是强类型,不同枚举即使结构相同也视为独立类型:
enum FirstEnum { Mem1, Mem2 }
enum SecondEnum { Mem1, Mem2 }// 允许:同类型比较
if (FirstEnum.Mem1 < FirstEnum.Mem2) {...} // 编译错误:类型不匹配
if (FirstEnum.Mem1 < SecondEnum.Mem1) {...}
**关键点:**编译器通过类型名称严格校验,避免逻辑错误。
🛠️ 三、实用 .NET Enum 方法
通过 System.Enum 类获取运行时枚举信息:
方法 | 作用 | 示例 |
---|---|---|
Enum.GetName() | 根据整数值返回成员名 | Enum.GetName(typeof(TrafficLight), 1) → “Yellow” |
Enum.GetNames() | 返回所有成员名的数组 | foreach (var name in Enum.GetNames(typeof(TrafficLight))) |
代码示例:
Console.WriteLine("Second member: " + Enum.GetName(typeof(TrafficLight), 1)); // 输出所有成员
foreach (var name in Enum.GetNames(typeof(TrafficLight))) {Console.WriteLine(name); // Green, Yellow, Red
}
💎 最佳实践总结
- 静态优势:优先直接访问枚举成员,无需创建实例。
- 类型安全:禁止跨枚举比较,利用编译器检查提升代码健壮性。
- 动态处理:使用 Enum 类方法实现枚举值与字符串的灵活转换。