1.使用枚舉類型進行按位或運算,應該用2的冪(一、二、四、8等) 來定義枚舉常量,以確保組按位運算結果與枚舉中的各個標誌都不重疊;ide
2.當可能須要對枚舉類型進行按位運算時,應該對枚舉使用FlagsAttribute /Flags屬性,這樣當對枚舉使用按位運算時才能夠解析出各個具體的枚舉常量名,而不單單是組合值;
spa
3.以 None 用做值爲零的標誌枚舉常量的名稱;3d
4.若是明顯存在應用程序須要表示的默認狀況,考慮使用值爲零的枚舉常量表示默認值。code
示例代碼1,不加FlagsAttribute:blog
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 }
運行結果:get
示例代碼2,加入FlagsAttribute:string
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 }
運行結果:it
5.枚舉中的-=操做io
示例代碼:event
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 }
運行結果: