C#中enum

enum 关键字用于声明枚举,即一种由一组称为枚举数列表的命名常量组成的独特类型。

通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方便地访问它。 但是,还可以将枚举嵌套在类或结构中。

默认情况下,第一个枚举数的值为 0,后面每个枚举数的值依次递增 1。 例如,下面的枚举,Sat 是 0,Sun 是 1,Mon 是 2 等.

enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri}; 
 
 

如下面的示例所示枚举数可用初始值来重写默认值。

enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri}; 
当然你也可以为每一个属性都指定值
 
 

在此枚举中,强制元素序列从 1 而不是 0 开始。 但是,一般建议包括值为 0 的常量。

每种枚举类型都有基础类型,该类型可以是除 char 以外的任何整型。 枚举元素的默认基础类型为 int 要声明另一整型枚举(如 byte),请在标识符之后紧跟类型,然后再使用冒号,如下面的示例所示。

enum Days : byte {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri}; 
 
 
 
 

准许使用的枚举类型有 byte、sbyteshortushortintuintlongulong

可以给 Days

类型的变量赋以基础类型范围内的任何值,所赋的值不限于已命名的常数。

enum E 的默认值为表达式 (E)0 生成的值。

基础类型指定为每个枚举数分配的存储大小。 但是,从 enum 类型到整型的转换需要用显式类型转换来完成。 例如,下面的语句使用强制转换(从 enum 转换为 int)将枚举数 Sun 赋值给一个 int 类型的变量。int x = (int)Days.Sun;

下面是编程例子:

 
 



public class EnumTest
{
enum Days { Sun, Mon, Tue, Wed, Thu, Fri, Sat };

static void Main()
{
int x = (int)Days.Sun;
int y = (int)Days.Fri;
Console.WriteLine("Sun = {0}", x);
Console.WriteLine("Fri = {0}", y);
}
}
/* Output:
Sun = 0
Fri = 5
*/


下面的代码示例阐释 enum 声明上的 System.FlagsAttribute 特性的使用和效果。

 
 


// Add the attribute Flags or FlagsAttribute.
[Flags]
public enum CarOptions
{
// The flag for SunRoof is 0001.
SunRoof = 0x01,
// The flag for Spoiler is 0010.
Spoiler = 0x02,
// The flag for FogLights is 0100.
FogLights = 0x04,
// The flag for TintedWindows is 1000.
TintedWindows = 0x08,
}

class FlagTest
{
static void Main()
{
// The bitwise OR of 0001 and 0100 is 0101.
CarOptions options = CarOptions.SunRoof | CarOptions.FogLights;

// Because the Flags attribute is specified, Console.WriteLine displays
// the name of each enum element that corresponds to a flag that has
// the value 1 in variable options.
Console.WriteLine(options);
// The integer value of 0101 is 5.
Console.WriteLine((int)options);
}
}
/* Output:
SunRoof, FogLights
5
*/

如果您移除 Flags,则示例将显示以下值:

5

5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值