文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>7->>枚举

7->>枚举

时间:2011-03-30  来源:乱舞春秋

  枚举定义了一组符号名称和数值对,如下:

Color
1     //byte、sbyte、short、ushort、int、uint、long 或 ulong    
2 enum Color:byte //默认是int
3 {
4 Red,//默认赋值为0
5 Yellow,//默认赋值为1
6 Blue,//默认赋值为2
7 }

  枚举类型使程序更见容易阅读、编写和维护。每个枚举类型默认继承自

System.Enum,属于值类型,但是枚举不能定义任何方法、属性【本质

也是方法嘛】和事件。实际上枚举被编译时会把其中的每个符号转变为类型

的一个常量字段,也就是0,1,2...会被硬编码进去。而使用这些常量【0,1...】

是以定义的字符代替的,一下是IL:

  

Blue项的IL:

 .field public static literal valuetype ConsoleApplication1.Color Blue = uint8(0x02)

注意这个uint8,这个和上面写的Color:byte中的byte对应。这是枚举类型的基础类型每一个枚举都有一个基础类型【只可以是基元类型】,C#默认是int。 Enum的静态方法

 Enum.GetUnderlyingType(Type enumType)返回枚举的基础类型。

一些方法
 1             Color myc = Color.Blue;
2 //ToString方法的格式化参数
3 Console.WriteLine(myc.ToString());//"Blue"常规格式
4 Console.WriteLine(myc.ToString("G"));//"Blue"常规格式
5 Console.WriteLine(myc.ToString("D"));//"2"十进制格式
6 Console.WriteLine(myc.ToString("X"));//"02"十六进制格式
7
8 //将一个文本符号转化为枚举类型的实例:
9 Color c = (Color)Enum.Parse(typeof(Color), "Blue");
10
11 //返回一个枚举类型的中定义的所有符号:
12 Color[] myColorArray = (Color[])Enum.GetValues(typeof(Color));
13
14 //返回一个枚举类型中每个符号的字符串形式组成的数据;
15 string[] myStrArray = Enum.GetNames(typeof(Color));
16
17 //判定指定的一个数值是否位于指定枚举中
18 Console.WriteLine(Enum.IsDefined(typeof(Color),"Green"));//输出False
19 //第二个参数是object类型的,一般是写字符,或者基础类型的数值

  位标记:【System.FlagsAttribute特性,位标记可以是枚举表示一组标记】

把上述代码改写成如下:

Flags
1     [Flags]
2 enum Color : byte
3 {
4 Red=1,//2的次方...
5 Yellow=2,
6 Blue=4,
7 }
测试代码
1  Color c = Color.Blue | Color.Yellow;
2 Console.WriteLine(c);//输出Yellow,Blue
3
4 //我们并没有定义基础类型值为3的符号
5 Color c = (Color)Enum.Parse(typeof(Color), "3");
6 //输出Red,Yellow
7 Console.WriteLine(c);
8
9 //[Flags]特性会影响ToString,Pares的方法行为。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载