您的位置:

Enumerable枚举类型

一、什么是Enum类型

枚举类型在C#中是一种特殊的值类型,主要用来定义一组常数,具有固定值的整型类型。它的定义格式如下:

enum 枚举名{
    枚举项1 = 常数1, 
    枚举项2 = 常数2,
    ……
}

其中,枚举项是枚举类型中每个常数的名字;常数是与枚举项对应的整型值。

如下面的一个例子定义了一个Season枚举类型,它包含了4个常数:春、夏、秋、冬,并且赋初值分别为1、2、3、4:

enum Season
{
    春=1,
    夏=2,
    秋=3,
    冬=4
}

二、Enum类型的优势

Enum类型具有以下优势:

1、可以使代码更明确:当定义变量时,使用与枚举项对应的名称更加清晰。

2、可以避免在使用常量时发生拼写错误或其他错误。

3、可以在switch语句中使用枚举类型而不是整数类型。

三、Enum类型的应用场景

1、在定义常量时使用Enum类型

Enum类型可以用来定义相互关联的一组常量。例如,你可以使用Enum类型定义一个方向枚举,然后将其用于方法中:

enum Direction
{
    North = 0,
    East  = 1,
    South = 2,
    West  = 3
}
public void Move(Direction d){
    switch(d){
        case Direction.North:
             //往上走
             break;
         case Direction.East:
             //往右走
             break;
         case Direction.South:
             //往下走
             break;
         case Direction.West:
             //往左走
             break;
     }
}

2、在创建对象时使用Enum类型

Enum类型可以用来唯一标识一组常量,例如,在创建一个操作系统进程时,可以使用Enum类型设置进程的优先级。

enum ProcessPriority
{
    High = 1,
    Normal = 2,
    Low = 3,
}
class Process
{
      public ProcessPriority ProcessPriority{get;set;}
}

3、在使用循环时使用Enum类型

Enum类型可以用来表示数据集合,这个数据集合可以用于循环、批量处理等。

enum Weekday
{
    Sunday,
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday
}
for (int i = 0; i < 7; i++)
{
    Console.WriteLine((Weekday)i);
}

四、Enum类型的弊端

Enum类型并非完美无缺,有以下弊端:

1、Enum类型会增加程序集体积:因为枚举类型会被编译成程序集中的一个值类型,因此在程序集中会增加一定的内存占用。

2、Enum类型会用一些不必要的常量:例如对Weekday枚举定义了一个容易出错的循环。

3、Enum类型没有压缩效果:虽然枚举本身可以压缩,但是不同枚举类型之间占用的空间可能会不同,这就导致了无法利用压缩算法实现压缩效果。