枚举类型在C#中和结构类型(struct)都是值类型中的复合类型,其定义为:枚举类型(也称为枚举)为定义一组可以赋给变量的命名整数常量提供了一种有效的方法。例如,假设您必须定义一个变量,该变量的值表示一周中的一天。该变量只能存储七个有意义的值。若要定义这些值,可以使用枚举类型。枚举类型是使用 enum 关键字声明的。

说白了,枚举类型就是把你想要的东西符号化,转化为一个指定的常数。枚举类型的基础类型可以是除了char类型外的所有类型,如果不指定基础类型,那么默认为Int32类型

 

枚举类型的定义:

enum Days

如果不指定第一个元素的初始值,那么枚举元素默认从0开始,并以1的步长累加。

enum Feature

注意各个元素之间以逗号隔开,并且最后一个元素末尾不需要添加任何符号,枚举类型需要以分号结尾。

enum Colors:uint

更改基类型需要在枚举名后使用冒号加类型名,C#枚举类型可使用的类型有:byte、sbyte、short、ushort、int、uint、long、ulong。

 

枚举类型的使用:

Feature A=Feature.Line;(A字段为只读)

注意在赋予字段初始值时,我们无法使用枚举类型:

 string

在赋值时,即使赋予的值不在枚举范围内,编译过程也不会报错:

 Feature B = (Feature)42;(需要显示转换成枚举类型)

但也不应该这样做,因为默认约定的是枚举变量只容纳枚举定义的值之一。将任意值赋给枚举类型的变量很有可能会导致错误。在该过程中,B是只读的。

位或
Colors myColors  =  Colors.Red  |  Colors.Blue  |  Colors.Yellow;
位与
Colors myColors  =  Colors.Red  &  Colors.Blue  &  Colors.Yellow;
遍历 

foreach  ( string  s  in  Enum.GetNames( typeof (Days)))

转换

Days C = (Days)Enum.Parse(typeof(Feature), "Line");

 

枚举类型的优势:

 

  • 可减少由数字转置或键入错误引起的错误。
  • 修改方便。
  • 使代码更易读,这意味着代码中发生错误的概率降低。
  • 确保向前兼容性。使用枚举可减少将来有人更改与成员名称对应的值时代码出错的概率。
  •  枚举类型确定了某个字段的取值范围,使得代码更加清晰易读,也方便我们修改。