C#枚举

来源:互联网 发布:qt release 优化 编辑:程序博客网 时间:2024/05/04 19:09


枚举类型是一种独特的值类型,用于声明一组命名的常量
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)。因此,该类的

继承方法和属性可用于枚举类型的值。