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 OprationType 14 { 15 None = 0, 16 Read=1, 17 Write=2, 18 }
運行結果:
示例代碼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 OprationType 14 { 15 None = 0, 16 Read=1, 17 Write=2, 18 }
運行結果:
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 OprationType 14 { 15 None = 0, 16 Read=1, 17 Write=2, 18 }
運行結果: