首页 > 代码库 > 枚举类型或运算

枚举类型或运算

1.使用枚举类型进行按位或运算,应该用2的幂(1、2、4、8等) 来定义枚举常量,以确保组按位运算结果与枚举中的各个标志都不重叠;

2.当可能需要对枚举类型进行按位运算时,应该对枚举使用FlagsAttribute /Flags属性,这样当对枚举使用按位运算时才可以解析出各个具体的枚举常量名,而不仅仅是组合值;

3. None 用作值为零的标志枚举常量的名称;

4.如果明显存在应用程序需要表示的默认情况,考虑使用值为零的枚举常量表示默认值。

示例代码1,不加FlagsAttribute:

 1 class Program 2     { 3         static void Main(string[] args) 4         { 5             OprationType opration = OprationType.Read | OprationType.Write; 6  7             Console.WriteLine(opration.ToString()); 8             Console.Read(); 9         }10     }11 12     //[FlagsAttribute]13     public enum OprationType14     {15         None = 0,16         Read=1,17         Write=2,18     }
View Code

运行结果:

示例代码2,加入FlagsAttribute:

 1  class Program 2     { 3         static void Main(string[] args) 4         { 5             OprationType opration = OprationType.Read | OprationType.Write; 6  7             Console.WriteLine(opration.ToString()); 8             Console.Read(); 9         }10     }11 12     [FlagsAttribute]13     public enum OprationType14     {15         None = 0,16         Read=1,17         Write=2,18     }
View Code

运行结果:

5.枚举中的-=操作

示例代码:

 1 class Program 2     { 3         static void Main(string[] args) 4         { 5             OprationType opration = OprationType.Read | OprationType.Write; 6             opration -= OprationType.Write; 7             Console.WriteLine(opration.ToString()); 8             Console.Read(); 9         }10     }11 12     [FlagsAttribute]13     public enum OprationType14     {15         None = 0,16         Read=1,17         Write=2,18     }
View Code

运行结果:

 

参考:http://msdn.microsoft.com/zh-cn/library/system.enum.aspx