是否有任何方式在C#中以確保枚舉常量映射到唯一的整數值。c#枚舉常量映射到唯一的整數值
public enum Color
{
None =0,
red = 1,
blue= 2,
white = 3
}
在這裏,如果我確實更改數值從「白色從3到2」我應該得到編譯錯誤。
在我的項目中,我將數據庫中的enum整數值保存爲常量。 我需要一個枚舉約束,如果有人在枚舉中添加一個新的常量(例如黑色)。用戶必須提供帶有枚舉常量的唯一數值。
感謝
是否有任何方式在C#中以確保枚舉常量映射到唯一的整數值。c#枚舉常量映射到唯一的整數值
public enum Color
{
None =0,
red = 1,
blue= 2,
white = 3
}
在這裏,如果我確實更改數值從「白色從3到2」我應該得到編譯錯誤。
在我的項目中,我將數據庫中的enum整數值保存爲常量。 我需要一個枚舉約束,如果有人在枚舉中添加一個新的常量(例如黑色)。用戶必須提供帶有枚舉常量的唯一數值。
感謝
的最好的事情是不明確設置在enum
定義的值。對enum
定義發表評論,告訴任何人添加它以確保它們只添加到最後。
例如:
public enum Color
{
None,
red,
blue,
white,
// **NEW ENTRIES MUST ONLY BE ADDED AT THE END OF THE ENUM**
}
另外也可以使用內置Color
結構及其ToArgb()
方法。或者確實是枚舉。
我會明確設置值_and_也添加您的評論。以防萬一... ;-) –
@UweKeim:以防萬一?編譯器停止正常工作? :) – Nick
如果有人仍然插入之間,至少我的數據庫值仍然有效。設想一個包含多個屏幕高度條目的枚舉;人們可能看不到底部的提示。爲了避免在頂部插入提示,我會(並且確實)更喜歡直接寫整數值。 –
你可以忽略顯式值規範並讓編譯器確定它們嗎? –
另外,您是否使用C#4.0或更高版本?如果是這樣,您可以利用[代碼合同](http://blogs.msdn.com/b/bclteam/archive/2008/11/11/introduction-to-code-contracts-melitta-andersen.aspx)模擬編譯時靜態斷言。 –