首页/ 第 5 章 · C# 编程基础/ 第 70 课
LESSON 70 · C# 编程基础

枚举 enum 与结构体 struct

枚举与结构体已掌握,C# 语法基本齐了。下一课回到 Unity 专有话题:脚本生命周期。

⏱ 约 14 分钟📊 难度:入门🗂 第 5 章 · C# 编程基础📍 第 70 / 300 课
课程进度
70 / 300

🎯本节学习目标

  • 掌握枚举定义与使用
  • 掌握结构体定义与使用
  • 理解与类的区别

🚀课程导读

“星期几”“方向”“敌人状态”这类固定选项,用枚举最清晰;“坐标点”这类小数据包,用结构体最轻量。

枚举 enum

一组有名字的常量。

  1. 枚举定义一组固定的命名整数值。
  2. 定义语法:public enum 枚举名 { 值1, 值2, 值3 }
  3. 例:public enum Direction { Up, Down, Left, Right }
  4. 使用:Direction d = Direction.Up;
  5. 内部每个值对应整数(默认从 0 开始):Up=0, Down=1……
  6. 可用 switch 处理枚举:switch (d) { case Direction.Up: ... break; }
  7. 【作用】避免魔法数字、提高可读性、IDE 智能提示友好。
  8. 游戏常用:敌人状态(Idle/Patrol/Attack)、角色状态、武器类型。
  9. 【指定值】public enum State { Idle = 0, Attack = 1, Dead = 99 }
💡
枚举定义位置:类外(命名空间内)或类内均可;类外更通用。

结构体 struct

轻量的“值类型”数据包。

  1. 结构体(struct)与类类似,可含字段和方法,但它是“值类型”。
  2. 定义:public struct Point { public float x; public float y; public Point(float a, float b) { x = a; y = b; } }
  3. 使用:Point p = new Point(1, 2);
  4. 【与类的区别】类=引用类型(赋值共享同一个对象);结构体=值类型(赋值是复制一份)。
  5. 结构体适合“小而简单”的数据(坐标、颜色、尺寸),性能更好。
  6. Unity 的 Vector3、Color、Quaternion 其实就是结构体。
  7. 【实战】struct WeaponStats { public int damage; public float speed; }
  8. WeaponStats sword = new WeaponStats(); sword.damage = 10;
  9. 体会结构体适合做“值包”(如存档的某一小段数据)。
💡
何时用 struct:数据量小、偏值语义、频繁创建销毁(性能友好);复杂对象用 class。

常见错误与排查

错误:枚举值转 int 报错?
原因:枚举与 int 不自动互转
解决:显式转换:(int)Direction.Up 或 (Direction)2。

动手练习

课后小任务(做出来才算真的学会)

  • 定义一个敌人状态的枚举并用 switch 处理
  • 定义一个 Point 结构体并创建使用
  • 说出 enum 与 struct 各自最适合的场景

本节小结

枚举与结构体已掌握,C# 语法基本齐了。下一课回到 Unity 专有话题:脚本生命周期。

完成打卡后,主站会实时更新你的学习进度 🎯

← 上一课命名空间与 using