新闻中心
C#怎么遍历枚举 C# Enum.GetValues遍历方法
在C#中遍历枚举最常用方式是Enum.GetValues,返回Array类型,需显式转换为具体枚举类型或使用C# 7.3+泛型重载;配合GetNames可获取名称与值;Flags枚举需手动位运算生成组合值。

在 C# 中遍历枚举最常用、最直接的方式就是用 Enum.GetValues,它返回一个包含所有枚举值的数组,类型为 Array,你可以用 foreach 或 for 遍历。
使用 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.GetNames 和 Enum.GetValues,或用 Enum.GetName 动态查:
DeepBrain
AI视频生成工具,ChatGPT +生成式视频AI =你可以制作伟大的视频!
146
查看详情
-
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 仍会返回所有定义的单个值(不含组合值),比如 Read、Write、ReadWrite(如果显式定义了)。它不会自动枚举所有可能的位组合。
所以:
– 如果你只想要“显式声明的枚举项”,照常调用 GetValues 即可;
– 如果需要生成所有合法的组合值(比如用于下拉筛选),就得自己按位运算组合,不能依赖 GetValues。
小提示:避免常见错误
- 别对
Enum.GetValues返回的Array直接用as T[]强转——它不是泛型数组,会返回null - 不要在循环里反复调用
typeof(T)或Enum.GetValues——可提前缓存结果提升性能 - 枚举底层类型不一定是
int(可能是byte、long等),转换时建议用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搜索引擎官网一键直达


2025-12-13
浏览次数:次
返回列表
ames可获取名称与值;Flags枚举需手动位运算生成组合值。