枚举定义
[Attribute] [new | public | protected | internal | private] enum Color [ : integral-type (underlying type )]
{
[Attributes] identifier
[Attributes] identifier = constant-expression
}
不允许抽象,不允许被继承,abstract 和 sealed 不被允许。
每一个枚举成员都有一个相应的常量值。这个值必须在基本类型(underlying type)的范围里。多个枚举成员可以共享相同的常量值。枚举成员的关联常量值(constant-expression)可以通过隐式或者显示来声明。如果枚举成员声明了常量表达式(constant-expression),那么这个常量表达式(constant-expression)的值就是该枚举成员的值。如果没有初始化,那么隐式的赋值遵从以下规则:
1. 如果这个枚举成员是第一个枚举成员,那么它的关联常量值为零
2. 否则,枚举成员的值是上一个成员的值加一。且值得范围要在基本类型(underlying type)的范围里,否则出现编译错误。
枚举成员的关联值不能使用自身的值,这样会产生死循环。
枚举类型的成员没有访问修饰符,成员的访问性同枚举类型的访问性。
System.Enum类型是所有枚举类型的抽象基类(它区别于枚举类型的基本类型(underlying type))。从System.Enum继承的成员在派生类中都是可以使用的。从任何枚举类型到System.Enum都会有装箱的操作发生,反之会有拆箱操作。
值得注意的是,System.Enum不是枚举类型。它是一个类(class)。System.Enum继承自System.ValueType,System.ValueType继承自object,在运行时,System.Enum的值可以为null,或者是一个已装箱的枚举类型的引用。
每个枚举类型有一个确定的类型。在枚举类型和整数类型间,或者在两个枚举类型间,可以显示枚举转换(explicit enumeration conversion)。枚举类型能使用的值集不会被它的成员所限制。一个枚举的基本类型(underlying type )的任何值都可以被转换为枚举类型的值,并且是这个枚举类型确定的值。
枚举E中的成员v的值,可以表示为(E)v。
枚举类型的值可以使用下面的操作符,==,!=,>,<,>=,<=,二元+,二元-,^,&,|,~,++,--,sizeof。