欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 深入理解C#枚举:从基础到高级应用

深入理解C#枚举:从基础到高级应用

2025/6/17 11:25:07 来源:https://blog.csdn.net/weixin_42291376/article/details/148681382  浏览:    关键词:深入理解C#枚举:从基础到高级应用

🚦 一、枚举的核心特性

成员本质

枚举仅包含声明的成员常量,不可添加方法或属性。
所有成员隐式静态,无需实例化即可访问(如 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 类方法实现枚举值与字符串的灵活转换。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词