写点什么

C#入门系列 (十五) -- 枚举

作者:陈言必行
  • 2022 年 6 月 15 日
  • 本文字数:889 字

    阅读完需:约 3 分钟

定义

枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。


C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。


枚举与结构体类型一样,是由程序员定义的类型。即一种由一组称为枚举数列表的命名常量组成的独特类型。


枚举类型的定义形式为:


enum 枚举名 {    变量1,    变量2,    ...,     变量n}
// 或者enum 枚举名 { 变量1 = 1, 变量2 = 2, ..., 变量n = n}
复制代码


这里我们通常习惯最后一个变量后面不加逗号,以表示这个枚举结束。


每个枚举类型都有一个底层整数类型,默认为 int。每个枚举成员被赋值为一个底层类型的常量值;在默认情况下,编译器把第一个成员赋值为 0,并对每一个后续成员的值比前一个成员多 1。


如果指定了某个枚举常量的值后,其后续的枚举常量就从当前枚举常量依次递增 1。


如下图,鼠标放到 WED 上时,可以看到其值为 3:




注意事项

  1. 与结构体类型一样,枚举是值类型,因此直接存储它们的数据,而不是分开存储数据和引用;

  2. 枚举只有一种类型的成员:命名的整数值常量;

  3. 不能对枚举类型的成员使用修饰符。它们都隐式地具有和枚举相同的可访问性;

  4. 不允许对不同枚举类型的成员进行比较,即使它们的结构和名称完全相同。

  5. 由于枚举类型的成员是常量,即使在没有该枚举类型的变量时它们也可以访问。使用枚举类型名、成员引用运算符加成员名的形式就可以实现对枚举类型成员的访问;

  6. 基础类型指定为每个枚举数分配的存储大小。但是,从 enum 类型到整型的转换需要用显式类型转换来完成。

  7. 通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方便地访问它。但是,还可以将枚举嵌套在类或结构中。

使用示例

enum WEEK{    MON = 1,    TUE,    WED,    THU,    FRI,    SAT,    SUN}
class Program{ static void Main(string[] args) { // 转为string类型 string str = WEEK.MON.ToString(); // 输出: MON Console.WriteLine(str);
// 转为int类型 int mon = (int)WEEK.MON; // 输出:1 Console.WriteLine(mon);
Console.ReadLine(); }}
复制代码


发布于: 刚刚阅读数: 3
用户头像

陈言必行

关注

公号:开发同学留步 2019.03.12 加入

我是一个从事Unity游戏开发攻城狮,6年开发经验,助你日常不加班。

评论

发布
暂无评论
C#入门系列(十五) -- 枚举_C#_陈言必行_InfoQ写作社区