程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> C# Enum設計和使用的相關技巧

C# Enum設計和使用的相關技巧

編輯:.NET實例教程
Enum的運算通常涉及到位運算(AND、OR、XOR),按位運算, 常使用FlagsAttribute 自定義屬性定義。FlagsAttribute 和 Enum 的准則:
  • 只有要對數值執行按位運算(AND、OR、XOR)時才對枚舉使用 FlagsAttribute 自定義屬性。
  • 用 2 的冪(即 1、2、4、8 等)定義枚舉常量。這意味著組合的枚舉常量中的各個標志都不重疊。
  • 請考慮為常用標志組合創建一個枚舉常量。例如,如果用於文件 I/O 操作的枚舉包含枚舉常量 Read = 1 和 Write = 2,請考慮創建枚舉常量 ReadWrite = Read OR Write,該常量組合了 Read 和 Write 標志。此外,在某些情況下,可能會將用於組合標志的按位 OR 運算視為一種高級概念,在簡單任務中不需要執行此操作。
  • 將負數定義為標志枚舉常量時應謹慎,因為很多標志位置都可能設置為 1,這可能使您的代碼產生混淆並易於發生代碼錯誤。
  • 測試數值中是否已設置標志的一種簡便方法為:在數值和標志枚舉常量之間執行按位“與”操作,這種方法會將數值中與標志不對應的所有位都設置為零,然後測試該操作的結果是否等於該標志枚舉常量。
  • 將 None 用作值為零的標志枚舉常量的名稱。在按位 AND 運算中,不能使用 None 枚舉常量測試標志,因為所得的結果始終為零。但是,您可以在數值與 None 枚舉常量之間執行邏輯(不是按位)比較,以確定數值中是否已設置任何位。
  • 如果創建的是值枚舉而不是標志枚舉,創建 None 枚舉常量仍十分有用。原因是在默認情況下,公共語言運行庫會將用於枚舉的內存初始化為零。因此,如果不定義值為零的常量,則枚舉在創建時將包含非法值。
  • 如果明顯存在應用程序需要表示的默認情況,請考慮使用值為零的枚舉常量表示默認值。如果不存在默認情況,請考慮使用值為零的枚舉常量(這意味著該情況不由任何其他枚舉常量表示)。
  • 不要僅為了反映枚舉自身的狀態而定義枚舉值。例如,不要定義僅用於標記枚舉末尾的枚舉常量。如果需要確定枚舉的最後一個值,請顯式檢查該值。此外,如果枚舉常量范圍中的所有值都有效,還可以對第一個和最後一個枚舉常量執行范圍檢查。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved