再读C# Programming Language之枚举(enum)

枚举类型详解
本文详细介绍了枚举类型的定义、成员的常量值及其初始化规则、枚举成员的访问性及枚举类型的转换等内容。同时,还讲解了枚举类型与整数类型之间的显式转换,以及枚举类型的值如何使用各种操作符。
枚举定义
[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。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值