C#枚举
枚举类型是一种独特的值类型,用于声明一组命名的常量
enum Color
{
Red,
Green,
Blue
}
每个枚举类型都有相应的整型,可以显示的声明为byte,short,long
默认为int
enum Color: long
{
Red,
Greeen,
blue
}
多个枚举成员可以共享相同的关联值。示例:
enum Color
{
Red,
Green,
Blue,
Max = Blue
}
显示了一个枚举,其中的两个枚举成员(B1ue和Max)具有相同的关联值。
可以隐式地或显式地对枚举成员的关联值进行赋值。如果枚举成员的声明中具有常量表达式初始值设定项,
则该常量表达式的值(隐式地转换为枚举的基础类型)就是该枚举成员的关联值。如果枚举成员的声明中没
有初始值设定项,则将按下面的规则隐式地设置它的关联值:
— 如果枚举成员是枚举类型中声明的第一个枚举成员,则它的关联值为零。
— 否则,枚举成员的关联值将通过将前一个枚举成员(按照文本顺序)的关联值加1得到。这样增加后的值
必须在基础类型可表示的值的范围之内;否则,将发生编译时错误。
System.Enum类型
System.Enum类型是所有枚举类型的抽象基类(该类型不同于枚举类型的基础类型),并且在任何枚举类型
中都可以使用继承自System.Enum的成员。从任何枚举类型到System.Enum都存在装箱转换,并且从
System.Enum到任何枚举类型都存在拆箱转换。
注意,System.Enum本身并不是枚举类型。相反,它是一个类类型,所有枚举类型都派生自该类型。
System.Enum类型继承自System.ValueType类型(参见4.1.1小节),而后者又继承自object类型。在运行时
, System.Enum类型的值可以是null,或对任何枚举类型的已装箱值的引用。
每个枚举类型都定义一个独特的类型;在枚举类型和整型之间或在两个枚举类型之间进行转换时,需要使用
显式枚举转换。枚举类型的值域并不受它的枚举成员限制。具体来讲,一个枚举的基础类型的任何一个值都
可以强制转换到该枚举类型,并成为该枚举类型的一个独特的有效值。
枚举成员的类型为包含它们的枚举类型(出现在其他枚举成员初始值设定项中时除外)。在枚举类型E中声
明并且关联值为v的枚举成员的值为(E)v。
每个枚举类型都自动派生自System.Enum类(而该类又派生自System.ValueType和object)。因此,该类的
继承方法和属性可用于枚举类型的值。