新闻中心

C#中的枚举(enum)怎么用 C#枚举类型的定义和遍历

2025-11-21
浏览次数:
返回列表
枚举是C#中用于定义命名常量的值类型,提升代码可读性和维护性。1. 使用enum关键字定义,成员默认从0开始递增,也可手动指定值。2. 可基于byte、short等整数类型定义。3. 通过Enum.GetValues()和Enum.GetNames()遍历成员值和名称。4. 用[Flags]特性支持位操作,组合多个值。5. 使用Enum.TryParse()安全解析字符串为枚举值。6. 避免魔数,增强语义清晰度。

c#中的枚举(enum)怎么用 c#枚举类型的定义和遍历

在C#中,枚举(enum)是一种值类型,用于定义一组命名的常量。使用枚举可以提高代码的可读性和维护性,特别是在处理具有固定取值范围的场景时非常有用,比如状态、选项、类型等。

枚举类型的定义

使用 enum 关键字来定义枚举类型。枚举成员默认从0开始,依次递增。你也可以手动指定每个成员的值。

// 定义一个表示星期的枚举
enum Weekday
{
    Monday,    // 值为 0
    Tuesday,   // 值为 1
    Wednesday, // 值为 2
    Thursday,  // 值为 3
    Friday     // 值为 4
}

// 定义带整数值的枚举
enum Status
{
    Pending = 1,
    Approved = 2,
    Rejected = 3
}

// 枚举也可以基于不同的整数类型(如 byte、short、long)
enum Priority : byte
{
    Low = 1,
    Medium = 2,
    High = 3
}

枚举的基本使用

定义后,可以直接像使用普通变量一样使用枚举类型:

CA.LA CA.LA

第一款时尚产品在线设计平台,服装设计系统

CA.LA 94 查看详情 CA.LA
Weekday today = Weekday.Monday;
Console.WriteLine(today);        // 输出: Monday
Console.WriteLine((int)today);   // 输出: 0

Status approval = Status.Approved;
Console.WriteLine(approval);     // 输出: Approved
Console.WriteLine((int)approval); // 输出: 2

遍历枚举的所有成员

有时我们需要获取枚举中所有可用的值或名称,可以通过 Enum.GetValues()Enum.GetNames() 方法实现。

// 遍历枚举的所有值
Console.WriteLine("Weekday values:");
foreach (Weekday day in Enum.GetValues(typeof(Weekday)))
{
    Console.WriteLine($"{day} = {(int)day}");
}

// 遍历枚举的所有名称
Console.WriteLine("\nWeekday names:");
foreach (string name in Enum.GetNames(typeof(Weekday)))
{
    Console.WriteLine(name);
}

输出结果:

Pending = 1
Approved = 2
Rejected = 3

实用技巧和注意事项

  • 枚举是值类型,继承自 System.Enum,不能有方法或字段(除非使用扩展方法)。
  • 可以用 [Flags] 特性标记位枚举,支持组合多个值(常用于权限、选项集合):
[Flags]
enum FileAccess
{
    None = 0,
    Read = 1,
    Write = 2,
    ReadWrite = Read | Write
}

FileAccess access = FileAccess.Read | FileAccess.Write;
Console.WriteLine(access); // 输出: Read, Write
  • 使用 Enum.TryParse() 安全地将字符串转换为枚举值:
if (Enum.TryParse("Approved", out Status result))
{
    Console.WriteLine(result);
}
else
{
    Console.WriteLine("无效的枚举值");
}
基本上就这些。枚举让代码更清晰,避免“魔数”出现,合理使用能显著提升程序的可维护性。

以上就是C#中的枚举(enum)怎么用 C#枚举类型的定义和遍历的详细内容,更多请关注其它相关文章!


# 是在  # 斗鱼的营销推广策略  # 集体网站建设  # 白城租房网站建设  # 广州网站建设带来的好处  # 扬中网站的建设品牌  # 宁波北仑区网站建设  # 岳阳网站建设方案外包  # 萝岗信息网站推广  # 香河seo代理  # 小龙虾的营销推广方案  # 可以用  # 是一种  # 枚举  # 意味着什么  # 开源  # 这对  # 微软  # 多个  # 值为  # 遍历  # 代码可读性  # access  # app  # c# 


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


相关推荐: mysql如何设置表访问权限_mysql表访问权限配置  如何在更新Composer依赖后自动运行测试_使用post-update-cmd钩子触发PHPUnit  学习通在线学习平台 学习通网页版直接进入课程中心  印象笔记怎样用批量导出备知识库_印象笔记用批量导出备知识库【备份方法】  QQ邮箱官方网站登录入口_QQ邮箱网页版在线使用  Mac终端命令大全_Mac常用Terminal指令速查  C++如何操作大型数据集_使用C++流式处理(Streaming)技术避免一次性加载大文件  在J*a中如何开发简易电子商务商品管理系统_商品管理系统项目实战解析  J*a如何使用AtomicInteger控制计数_J*a无锁计数器性能分析  poki免费入口快捷访问 poki人气小游戏直接玩站点  QQ邮箱登录平台入口 QQ邮箱网页版邮箱官方入口  漫蛙manwa2最新登录网址_漫蛙manwa2手机网页版入口  Mudbox图层蒙版怎么用_Mudbox图层蒙版数字雕刻应用技巧  J*a里如何实现线程安全的懒加载单例_懒加载单例实现方法解析  使用Pandas转换并合并DataFrame:多列映射至统一结构  UE5.7引擎表现爆炸优化无敌!5090跑4K稳定60FPS  C++如何解决segmentation fault_C++段错误调试与原因分析  vivo云服务网页版登录 怎么登录vivo云服务网页版  PyTorch模型训练准确率不提升:诊断与修复常见指标计算错误  《主播少女的秘密账号迷宫》首支宣传片  NRF24L01数据传输深度解析:解决大载荷接收异常与分包策略  qq浏览器打开空白页怎么办 qq浏览器启动后显示白屏的解决教程  Excel函数批量查找替换超快方法_Excel用REPLACE和FIND函数秒级替换  12306怎么选座位选到安静区_12306选座安静区域选择策略  QQ邮箱官网登录入口 QQ邮箱网页版邮箱快速登录  单12V-2×6实现为RTX 5090供电750W!甚至都没敢跑分  Shopware订单对象中获取产品自定义字段的正确方法  uc浏览器网页版极速入口 uc网页浏览器网页版流畅体验  深入理解J*a编译器的兼容性选项:从-source到--release  c++中的std::forward_list和std::list有什么不同_c++ forward_list与list区别分析  J*aScriptWebpack优化_J*aScript构建工具实战  J*a里如何使用forEach遍历Map_Map遍历方法说明  Discord Slash 命令响应超时问题的异步解决方案  AngularJS $http POST请求数据传递与Go后端接收实践  深入理解J*a链表中的IPosition接口与使用  PDO预处理语句中冒号的正确处理:区分SQL函数格式与命名占位符  Angular响应式表单:实现提交后表单及按钮的禁用与只读化  搜狗浏览器如何使用密码生成器创建强密码 搜狗浏览器内置密码安全工具  Win10系统服务哪些可以禁用 Win10安全优化服务列表【干货】  AO3最新官网入口公告_2025AO3镜像站实时查询方法  163邮箱官方主页登录 直达网易邮箱登录核心页面  vivo手机参数配置怎么增强信号_vivo手机参数配置信号增强方法  qq游戏大厅官方下载_qq游戏免费下载安装入口  Win10磁盘清理工具在哪 Win10打开并使用磁盘清理【教程】  vivo浏览器怎么扫描二维码 vivo浏览器内置扫一扫功能使用方法  《明末:渊虚之羽》设计师谈设计角色:那会刚毕业 充满激情  Python自定义类排序:解决lambda键值访问TypeError的实践指南  拼多多购物车商品数量无法修改如何处理 拼多多购物车操作优化方法  在FastAPI中利用lifespan与依赖注入高效管理Redis连接池  MongoDB聚合管道:正确匹配对象数组中_id的方法 

搜索