新闻中心

C#怎么遍历枚举 C# Enum.GetValues遍历方法

2025-12-13
浏览次数:
返回列表
在C#中遍历枚举最常用方式是Enum.GetValues,返回Array类型,需显式转换为具体枚举类型或使用C# 7.3+泛型重载;配合GetNames可获取名称与值;Flags枚举需手动位运算生成组合值。

c#怎么遍历枚举 c# enum.getvalues遍历方法

在 C# 中遍历枚举最常用、最直接的方式就是用 Enum.GetValues,它返回一个包含所有枚举值的数组,类型为 Array,你可以用 foreachfor 遍历。

使用 Enum.GetValues + foreach 遍历(推荐)

这是最简洁清晰的做法,适合大多数场景。注意要显式转换为具体的枚举类型,否则拿到的是 object

foreach (var value in Enum.GetValues(typeof(DayOfWeek)))
{
    DayOfWeek day = (DayOfWeek)value;
    Console.WriteLine(day); // 输出:Sunday, Monday, ..., Saturday
}

也可以用泛型方式(C# 7.3+ 支持)更安全:

foreach (DayOfWeek day in Enum.GetValues<DayOfWeek>())
{
    Console.WriteLine($"{day} = {(int)day}");
}

获取枚举名称和值(Name + Value)

如果既要显示文字名,又要获取底层整数值,可以结合 Enum.GetNamesEnum.GetValues,或用 Enum.GetName 动态查:

DeepBrain DeepBrain

AI视频生成工具,ChatGPT +生成式视频AI =你可以制作伟大的视频!

DeepBrain 146 查看详情 DeepBrain
  • Enum.GetNames(typeof(MyEnum)) → 返回 string[],只含名称
  • Enum.GetValues(typeof(MyEnum)) → 返回 Array,含原始值(如 int)

常用组合写法:

var names = Enum.GetNames(typeof(Status));
var values = Enum.GetValues(typeof(Status));
<p>for (int i = 0; i < names.Length; i++)
{
Console.WriteLine($"{names[i]} = {values.GetValue(i)}");
}

处理带 [Flags] 特性的枚举

如果是位标记枚举(如 [Flags] enum FileAccess),Enum.GetValues 仍会返回所有定义的单个值(不含组合值),比如 ReadWriteReadWrite(如果显式定义了)。它不会自动枚举所有可能的位组合。

所以:
– 如果你只想要“显式声明的枚举项”,照常调用 GetValues 即可;
– 如果需要生成所有合法的组合值(比如用于下拉筛选),就得自己按位运算组合,不能依赖 GetValues

小提示:避免常见错误

  • 别对 Enum.GetValues 返回的 Array 直接用 as T[] 强转——它不是泛型数组,会返回 null
  • 不要在循环里反复调用 typeof(T)Enum.GetValues——可提前缓存结果提升性能
  • 枚举底层类型不一定是 int(可能是 bytelong 等),转换时建议用 Convert.ToInt32(value) 更安全

基本上就这些。用好 Enum.GetValues 加上一次类型转换,遍历枚举既简单又可靠。

以上就是C#怎么遍历枚举 C# Enum.GetValues遍历方法的详细内容,更多请关注其它相关文章!


# 的是  # 深圳网站结构seo  # 张家口网站建设报价  # seo文案内容  # 金牛区网站优化方法分析  # 高效seo费用  # 郑州视频网站优化价格  # seo公司询问25火星软件  # 陕西抖音seo引流公司  # 海南seo营销哪家好点  # 用户如何做好网站优化  # access  # 性能测试  # 最常用  # 如何用  # 不安全  # 如何使用  # 转换为  # 中文网  # 可以用  # 遍历  # c# 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: TikTok国际版网页端快速入口 TikTok全球版短视频浏览教程  构建轻量级网站内部消息系统:Formspree 集成指南  c++如何实现一个简单的ECS框架_c++数据驱动设计与游戏开发  Win10双系统截图高效法 截屏快捷键速记【技巧】  美团外卖商家服务中心入口 美团商家版官网入口  J*aScript中安全有效地处理localStorage字符串数据  mcjs网页版在线存档 mcjs云存档登录入口  ArrayList与LinkedList核心操作的Big-O复杂度分析  Win11如何开启讲述人功能 Win11屏幕阅读器(讲述人)开启与关闭【教程】  win11 arm版怎么安装 M1/M2 Mac虚拟机安装ARM win11的方法  Yandex浏览器官方网页版入口 Yandex浏览器最新版官网  TikTok评论显示延迟如何处理 TikTok评论刷新优化方法  处理Kafka消费者会话超时:深入理解消息处理语义与幂等性  UC浏览器网页版登录入口官网 电脑版网址入口  1688商家版怎样分析买家画像精准供货_1688商家版分析买家画像精准供货【供货策略】  在哪找SublimeJ远程工具_SFTP插件配置教程  FullCalendar 自定义按钮样式定制指南  高德地图怎么看全景照片_高德地图全景照片浏览教程  支付宝解绑银行卡步骤_支付宝如何解除绑定银行卡  QQ邮箱在线登录平台 QQ邮箱个人邮箱网页版入口  TikTok搜索结果不显示如何解决 TikTok搜索刷新优化方法  4399网页游戏电脑版全新入口 4399电脑端在线玩指南  写好的html代码怎么运行出来_运行写好的html代码方法【教程】  支付宝碰一碰设备是REDMI手机吗 博主拆机辟谣:处理器、内存都不一样  双系统安装时,如何设置默认启动系统? msconfig命令了解一下!  解决Tabulator日期时间排序问题的专业指南  品牌机怎么重装系统 联想/戴尔/惠普笔记本恢复出厂系统教程  12306选座怎么选到临时改签座_12306改签选座策略与步骤  C++如何实现一个装饰器模式_C++设计模式之动态地给对象添加额外职责  Win11怎么开启高性能模式_Windows 11电源计划优化设置  京东京造J1和网易云音乐氧气真无线有什么不同_国产电商蓝牙耳机音质对比  Discord Slash 命令响应超时问题的异步解决方案  KFC游戏互动怎么赢取优惠券_KFC线上游戏活动参与与优惠代码赢取教程  Golang如何使用buffered channel提高性能_Golang buffered channel优化技巧  黑鲨3Pro怎样在相册开漫画风滤镜_iPhone黑鲨3Pro相册开漫画风滤镜【趣味滤镜】  MongoDB聚合管道:正确匹配对象数组中_id的方法  12306几点到几点不能订票? | 官方最新系统维护时间全解析  Lar*el DB::listen 事件中的查询执行时间单位解析  Safari怎么安装扩展程序 浏览器插件安装与管理方法【详解】  NRF24L01数据传输深度解析:解决大载荷接收异常与分包策略  qq浏览器打开空白页怎么办 qq浏览器启动后显示白屏的解决教程  提升屏幕阅读器对“m”时间单位的播报准确性:HTML与CSS组合解决方案  sublime如何配置Python开发环境_将sublime打造成轻量级Python IDE  CSS Box Model与弹性按钮:维持布局稳定的动画实践  UC浏览器官网入口2025最新 UC浏览器网页版正式地址  微信网页版官方快速登录入口 微信网页版网页版账号直达  vivo浏览器自带的下载器速度慢怎么办 vivo浏览器提升文件下载速度的技巧  C++如何打印当前代码行号与文件名_C++预定义宏FILE与LINE的使用  12306选座怎么选到特殊座位_12306特殊座位选择注意事项  俄罗斯Yandex免登录入口_Yandex搜索引擎官网一键直达 

搜索