当前位置: 首页 > news >正文

掌握C#枚举:从交通灯看懂状态管理

枚举(Enum)是C#中管理固定状态集合的利器,它像"魔法标签"将数字转化为可读性极强的语义化常量。今天通过交通灯案例,带你彻底吃透枚举!

🧩 一、枚举的本质特性

值类型核心

与结构体(struct)相同,枚举直接存储数据而非引用,内存高效无负担:

enum TrafficLight { Green, Yellow, Red } // 值类型声明 

成员唯一性约束

成员必须是整数值常量,逗号分隔且禁止分号:

// ✅ 正确写法(逗号分隔无分号)
enum Colors { Red, Green = 5, Blue }

🔢 二、底层运行机制

默认int类型

编译器自动分配整数值(从0开始递增):

TrafficLight.Green  // 实际值=0 
TrafficLight.Yellow // 实际值=1 
TrafficLight.Red    // 实际值=2 

值类型验证实验

var light = TrafficLight.Green;
Console.WriteLine($"状态:{light},数值:{(int)light}");
// 输出:状态:Green,数值:0 

⚙️ 三、高阶自定义技巧

更改底层类型

支持所有整数类型(byte/short等),节省内存:

enum Light : byte { Off, Low, High } // 底层byte类型 

显式赋值策略

自由设定初始值,允许重复数值:

enum Priority {Low = 10,     // 自定义起点 Medium = 15,  // 跳跃赋值 High = 10     // 允许值重复(慎用!)
}

🚦 四、实战交通灯系统

// 1. 声明枚举类型 
enum TrafficLight { Green, Yellow, Red }// 2. 创建状态变量 
var currentLight = TrafficLight.Green;// 3. 状态切换逻辑 
switch(currentLight) {case TrafficLight.Green:Console.WriteLine("通行"); break;case TrafficLight.Yellow:Console.WriteLine("减速"); break;case TrafficLight.Red:Console.WriteLine("停止"); break;
}

交通灯状态

💡 五、枚举核心价值总结

优势应用场景
语义化状态标识状态机(订单/工作流)
类型安全校验替代魔法数字(错误代码)
智能提示支持开发效率提升
内存占用优化嵌入式/高性能场景

最佳实践:优先使用枚举替代整数常量,让代码获得"自解释"的超能力!

http://www.dtcms.com/a/250461.html

相关文章:

  • 【0.3 漫画数据结构与算法】
  • Sngine 4.0.4海外社交平台PHP源码 – 多语言支持短视频和博客订阅(源码下载)
  • pdb/sdf转pdbqt错误、pdbqt小分子文件对接蛋白质dock分数为0
  • [Linux入门] Linux磁盘管理与文件系统
  • Heterogeneous Graph Transformer (WWW 2020)译文
  • Spring学习笔记
  • Java并发编程实战 Day 22:高性能无锁编程技术
  • RT-Thread Studio SDK管理器安装资源包失败
  • uniapp打包安卓和ios
  • 初学STM32编程技巧全功能按键非阻塞式实现
  • Amazon Q in QuickSight 实战:自然语言秒级生成数据报表与深度洞察
  • HTML+CSS 登陆框动态切换
  • 学习Oracle------认识VARCHAR2
  • 量化面试绿皮书:13. 贴错标签的袋子
  • pikachu靶场通关笔记31 文件包含02之远程文件包含
  • 中医穴位学习工具推荐,专业经络穴位图解
  • 【AS32系列MCU调试教程】调试工具:Eclipse调试工具栏与窗口的深入分析
  • 【模板】埃拉托色尼筛法(埃氏筛)
  • 【Linux系统编程】线程概念
  • Java 常用类 Math:从基础到高阶应用指南
  • EffRes-DrowsyNet:结合 EfficientNetB0 与 ResNet50 的新型混合深度学习模型用于驾驶员疲劳检测算法实现
  • 源端串联端接
  • 智能集运重塑反向海淘:系统破解物流困局
  • Java大模型开发入门 (9/15):连接外部世界(中) - 向量嵌入与向量数据库
  • 【精华】这样设计高性能短链生成系统
  • 人工智能:警惕人工智能对文学语言的侵蚀与固化。影响设计各个方面,影响的是好还是坏?
  • 高速隔直电容设计
  • 【Zephyr 系列 25】多芯片协同设计:主控 + BLE + LoRa 芯片的统一调度与消息系统
  • Flower框架中noise_multiplier与clipped_count_stddev的关系
  • 从 C 语言计算器到串口屏应用