[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,
}