2012-05-09 41 views
0

是否有任何方式在C#中以確保枚舉常量映射到唯一的整數值。c#枚舉常量映射到唯一的整數值

public enum Color 
{ 
None =0, 
red = 1, 
blue= 2, 
white = 3 
} 

在這裏,如果我確實更改數值從「白色從3到2」我應該得到編譯錯誤。

在我的項目中,我將數據庫中的enum整數值保存爲常量。 我需要一個枚舉約束,如果有人在枚舉中添加一個新的常量(例如黑色)。用戶必須提供帶有枚舉常量的唯一數值。

感謝

+5

你可以忽略顯式值規範並讓編譯器確定它們嗎? –

+0

另外,您是否使用C#4.0或更高版本?如果是這樣,您可以利用[代碼合同](http://blogs.msdn.com/b/bclteam/archive/2008/11/11/introduction-to-code-contracts-melitta-andersen.aspx)模擬編譯時靜態斷言。 –

回答

3

的最好的事情是不明確設置在enum定義的值。對enum定義發表評論,告訴任何人添加它以確保它們只添加到最後。

例如:

public enum Color 
{ 
    None, 
    red, 
    blue, 
    white, 
    // **NEW ENTRIES MUST ONLY BE ADDED AT THE END OF THE ENUM** 
} 

另外也可以使用內置Color結構及其ToArgb()方法。或者確實是枚舉。

+1

我會明確設置值_and_也添加您的評論。以防萬一... ;-) –

+1

@UweKeim:以防萬一?編譯器停止正常工作? :) – Nick

+0

如果有人仍然插入之間,至少我的數據庫值仍然有效。設想一個包含多個屏幕高度條目的枚舉;人們可能看不到底部的提示。爲了避免在頂部插入提示,我會(並且確實)更喜歡直接寫整數值。 –