枚举类型(enum 或 enumeration)是由基础整型数值类型的一组命名常量定义的值类型。要定义枚举类型,请使用 enum 关键字并指定枚举成员的名称:

enum 季节
{
    春,
    夏,
    秋,
    冬
}

默认情况下,枚举成员的关联常数值为 int 类型;它们从 0 开始,并按照定义文本顺序递增 1。可以显式指定任何其他整型数值类型作为枚举类型的基础类型。你也可以显式指定相关的常数值,如下例所示:

enum 错误代码 : ushort
{
    none = 0,
    未知 = 1,
    连接失败 = 100,
    离线读取 = 200
}

不能在枚举类型的定义中定义方法。要向枚举类型添加功能,请创建扩展方法。

枚举类型 E 的默认值是表达式 ( E ) 0 产生的值,即使 0 没有相应的枚举成员。

使用枚举类型来表示从一组互斥值或选择组合中的选择。要表示选择的组合,请将枚举类型定义为位标志。

枚举类型作为位标志

如果希望枚举类型表示选择的组合,请为这些选择定义枚举成员,以便单个选择是位字段。也就是说,这些枚举成员的关联值应该是 2 的整数次幂。然后,可以使用按位逻辑运算符 | 或 & 分别组合选项或使选项的组合相交。要指示枚举类型声明位字段,请对其应用 Flags 属性。如下面的示例所示,还可以在枚举类型的定义中包含一些典型的组合。

[Flags]
public enum 周
    {
    无   = 0B_0000_0000, // 0
    周一 = 0B_0000_0001, // 1
    周二 = 0B_0000_0010, // 2
    周三 = 0B_0000_0100, // 4
    周四 = 0B_0000_1000, // 8
    周五 = 0B_0001_0000, // 16
    周六 = 0B_0010_0000, // 32
    周日 = 0B_0100_0000, // 64
    周末 = 周六 | 周日,   // 96
    }

    static void Main ( string [ ] args )
        {
        周 工作日 = 周 . 周一 | 周 . 周二 | 周 . 周三 | 周 . 周四 | 周 . 周五;
        Console . WriteLine ( $"我们在{工作日}工作!" );

        周 例会 = 周 . 周一 | 周 . 周五;
        Console . WriteLine ( $"我们在{例会}开会!" );

        bool Ber周四开会 = ( 例会 & 周 . 周四 ) == 周 . 周四;
        Console . WriteLine ( $"我们在周四开会吗?{Ber周四开会}" );

        var SuiJi = ( 周 ) 62;
        Console . WriteLine ( $"{SuiJi}" );
        }

上例输出:
我们在周一, 周二, 周三, 周四, 周五工作!
我们在周一, 周五开会!
我们在周四开会吗?False
周二, 周三, 周四, 周五, 周六

System . Enum 类型和枚举约束

System . Enum 类型是所有枚举类型的抽象基类。它提供了许多方法来获取关于枚举类型及其值的信息。

可以在基类约束(称为枚举约束)中使用 System . Enum 来指定类型参数是枚举类型。任何枚举类型还满足结构约束,该约束用于指定类型参数为非空值类型。

转换

对于任何枚举类型,枚举类型与其底层整型之间都存在显式转换。如果将枚举值强制转换为其基础类型,则结果是枚举成员的关联整数值。

[ Flags ]
public enum 季节
    {
    春 = 0B_0001,
    夏 = 0B_0010,
    秋 = 0B_0100,
    冬 = 0B_1000,
    }
static void Main(string[] args)
    {
    季节 Jd = 季节 . 冬;
    Console . WriteLine ( $"我最喜欢的季节:{Jd},它的整数值:{( int ) Jd}" );

    var Ch = ( 季节 ) 1;
    Console . WriteLine ( Ch );

    var Q = ( 季节 ) 4;
    Console . WriteLine ( ( ( int ) Q ) );
    }

上例输出:
我最喜欢的季节:冬,它的整数值:8

4

使用 Enum . IsDefined 方法确定枚举类型是否包含具有特定关联值的枚举成员。


兔子码农
3 声望1 粉丝

一个酒晕子