您的位置:首页 > 编程语言 > C#

C#中的标志枚举

2013-12-21 14:27 190 查看
标志枚举在声明枚举前加[flag]
枚举值一般用2的N次方(1 2 4 8......) 不能(1 2 3)因为标志每组可以自由组合 1+2=3 就冲突了
下面将其十进制转化成为二进制说明就可以明白点

00001→1
00010→2
00100→4
01000→8
10000→16
--------------------
高富帅白
00001
00010
00100
01000
-------
01111→15   高富帅白

--------------------
01111  高富帅白   用对象集合与上白若结果为白表示真,则要判断的项在集合中
01000  白
-------
01000→8 白


namespace _02标志枚举
{
class Program
{
static void Main(string[] args)
{
FileInfo info = new FileInfo(@"D:\a.txt");
Console.WriteLine(info.Attributes);
//验证一个文件是否隐藏
if ((info.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
{
Console.WriteLine("文件隐藏!!");
}
else
{
Console.WriteLine("文件没有隐藏张Z!!!");
}
//设置文件的特性。只读,隐藏了
info.Attributes = FileAttributes.ReadOnly | FileAttributes.Hidden | FileAttributes.Archive;
Console.WriteLine(info.Attributes);
//验证一个文件是否隐藏
if ((info.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
{
Console.WriteLine("文件隐藏!!");
}
else
{
Console.WriteLine("文件没有隐藏张Z!!!");
}

GoodPeople people = GoodPeople.帅 | GoodPeople.富 | GoodPeople.高 | GoodPeople.白;
Console.WriteLine(people);
//为标志枚举赋值
//验证枚举people中是否有白这一项
if ((people & GoodPeople.白) == GoodPeople.白)
{
Console.WriteLine("很白!!");
}
else
{
Console.WriteLine("不白!!!!");
}
Console.ReadKey();
}
}
[Flags]//表示标志枚举 ,标志枚举的特性,加上这特性 枚举类型.tostring(),返回的就是文字了,不是数字
public enum GoodPeople
{
//标志枚举是需要设置固定的值的,要是不设置值得话,两个项的或运算就会混乱
//值必须是2的次方
//普通枚举是互斥的,但对于标志枚举是可以组合的,
高 = 1,
富 = 2,
帅 = 4,
白 = 8,
美 = 16
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: