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 } }
相关文章推荐
- 《CLR via C#》---枚举标志和标志位
- C#枚举(标志枚举,进行二进制的转换)
- unity3d 教程 C#枚举标志
- C# 基础(一) 访问修饰符、ref与out、标志枚举等等
- c#中利用简单枚举和标志枚举(组合,删除,查询是否包含)
- C#枚举类型研究
- C#正真实现C++中的数值型位域(非位标志)
- c#第5章 变量的更多内容 隐式和显式转换、枚举、结构、数组、
- C#学习篇(六)枚举
- C# Enum,Int,String的互相转换 枚举转换
- C#总结【常量-枚举-数组】
- C#枚举中使用Flags特性
- 利用枚举,简化多个标志位统计
- (转)C# Enum,Int,String的互相转换 枚举转换
- C# 枚举类型 enum
- C#枚举
- c# Enum 枚举 转 list 再转 json 字符串
- C# 位域[flags] 枚举
- C#中string类型前加@标志的作用
- C#的枚举Enum注意的问题