枚举类型实际上就是为一组在逻辑上密不可分的整数值提供便于记忆的符号,它是派生自System.Enum的一种值类型。
一般定义形式:
public enum ZT
{
高,
富,
帅,
白,
美
}
1. 一般枚举都是互斥的
2. 枚举中的每个值都有一个对应的数值来表示
3. 枚举在编译完成那个后就已经用对应的数值常量来表示,默认数值是整形,从0开始一次增加
4. 可以手动设置每个枚举对应的数值
5. Int型换成枚举
ZTz=new ZT;
int i=1;
z=(ZT)I;
6. 字符串转换成枚举
ZT z=new ZT;
string str=”Q我吧”;
z=(ZT)Enum.Parse(typeof(ZT),str);
7. 定义枚举时,在枚举名号后:type(int,long,、、、、)
8. 不能直接把字符串转换成枚举,必须先把字符串转换成枚举类型再强制转换成对应的枚举类型,整形可以直接转换成枚举
枚举中的特例:标志枚举
1. 它的一般形式
[Flags]
public enum ZT
{
高=1,
富=2,
帅=4,
白=8,
美=16
}
2. 枚举中的项是可以组合的,标志枚举的项对应的值:必须是二进值中2的整数次方
3. 定义时,前面有『Flags』
4. 标志枚举使用二进制的方法判断,数值的取值规范
00001→1
00010→2
00100→4
01000→8
10000→16
判断是否含有每个枚举项,用二进制&的方式
class Program
{
static void Main(string[] args)
{
ZT z = ZT.白 | ZT.富 | ZT.美;
Console.WriteLine(z);
//z中的数值为白+富+美的二进制数
01110
01000
00010
|| 00100 用或的方式对元素对应的二进制数据进行运算
01110 结果
ZT z1 = ZT.美;
Console.WriteLine(z1);
if ((z& ZT.白) == ZT.白)//判断z中是否含有“白”
01110
&01000 用与的方式对要判断是否存在的元素对应的二进制数据与原数据进行运算
01000 结果不为false就表示含有
{
Console.WriteLine("含有白");
}
Console.ReadKey();
}
}