enum之Flags特性

来源:互联网 发布:王千源事件 知乎 编辑:程序博客网 时间:2024/06/08 18:16

[Flags]的微软解释是“指示可以将枚举作为位域(即一组标志)处理。”其实就是在编写枚举类型时,上面附上Flags特性后,用该枚举变量是既可以象整数一样进行按位的“|”或者按位的“&”操作了。
另外一个是在引用COM组件时使用,比如权限、执行状态等,都可以用一个int型保存到数据库中,C#中使用枚举可以处理这个问题。

     private static void Main(string[] args)        {            Permission permission = Permission.create | Permission.read | Permission.update | Permission.delete;            Console.WriteLine("1、枚举创建,并赋值……");            Console.WriteLine(permission.ToString());            Console.WriteLine((int)permission);            permission = (Permission)Enum.Parse(typeof(Permission), "5");            Console.WriteLine("2、通过数字字符串转换……");            Console.WriteLine(permission.ToString());            Console.WriteLine((int)permission);            permission = (Permission)Enum.Parse(typeof(Permission), "update, delete, read", true);            Console.WriteLine("3、通过枚举名称字符串转换……");            Console.WriteLine(permission.ToString());            Console.WriteLine((int)permission);            permission = (Permission)7;            Console.WriteLine("4、直接用数字强制转换……");            Console.WriteLine(permission.ToString());            Console.WriteLine((int)permission);            permission = permission & ~Permission.read;            Console.WriteLine("5、去掉一个枚举项……");            Console.WriteLine(permission.ToString());            Console.WriteLine((int)permission);            permission = permission | Permission.delete;            Console.WriteLine("6、加上一个枚举项……");            Console.WriteLine(permission.ToString());            Console.WriteLine((int)permission);            Console.WriteLine((int)Permission.delete);            Console.ReadKey();        }        [Flags]        public enum Permission        {            create = 1,            read = 2,            update = 4,            delete = 8,        }

结果

这里写图片描述

http://blog.sina.com.cn/s/blog_8b7263d10101br8e.html

0 0