您的位置:首页 > 其它

枚举(enum)的常用操作

2011-05-16 13:04 369 查看
定义一个枚举用作后面的例子

enum EnumName{

Red = 1,

Green,

Blue = 4,

White = 8,

Black = 16

}

枚举与符号、值的转换

EnumName en = EnumName.Green;

//1.枚举转值

int enValueInt = (int)en; // enValueInt 被赋值为 2

string enValueStr = en.ToString("D"); // enValueStr 被赋值为 "2"

//2.值转枚举

EnumName em = (EnumName)8; // em 被赋值为 EnumName.White

em = (EnumName)Enum.Parse(typeof(EnumName), 4.ToString()); // em 被赋值为 EnumName.Blue

//3.符号转枚举

em = (EnumName)Enum.Parse(typeof(EnumName), "Blue"); // em 被赋值为 EnumName.Blue

获取所有的符号名

foreach (string s inEnum.GetNames(typeof(EnumName))) //通过 foreach 遍历枚举EnumName的定义

FlagsAttribute特性的使用

需要注意,枚举个元素的值除了1以外,必须是2的倍数,不能使用0,否则组合就得不到正确的值

EnumName em = EnumName.Red | EnumName.Blue | White;

Console.WriteLine(em); // 输出 13;

如果在EnumName定义的时候加上 Flags 特性,如:

[Flags]

enum EnumName{ .... }

那么以上输出将变为 Red, Blue, White

加了Flags特性以后可以通过 Console.Write((int)em) 的方式来输出数字值;

对枚举组合(通过按位或符号“|”)运用switch
Type t = typeof(em);

string[] items = Enum.GetNames(t);

foreach (string s in items)

{

EnumName n = (EnumName)Enum.Parse(t, s);

if ((em & n) > 0)

{

switch(n){

case EnumName.Red: Console.Write(n); break;

case EnumName.Green: Console.Write(n); break;

case EnumName.Blue: Console.Write(n); break;

case EnumName.White: Console.Write(n); break;

case EnumName.Black: Console.Write(n); break;

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: