2015-11-24 105 views
0

開始implemeting爲枚舉重複值的邏輯之前,我讀到這裏的幾個問題,但後來我遇到了以下問題:枚舉重複的值賦予重名

我有以下枚舉:

public enum Features 
{ 
    X1= 3, 
    X2= 3, 
    X3= 6, 
    X4= 6, 
    X5= 6, 
    X6= 6, 
    X7= 10, 
    X8= 10, 
} 

從那以後,我嘗試創建像這樣的列表:

var features = new List<Features>(){X1,X2,X3,X5,X6,X7,X8}; 

,當我看着在調試模式下的列表,列表中包含以下枚舉:

X1,X1,X3,X3,X3,X7,X7 

爲什麼會發生這種情況,它是否隱式調用GetName()? 有沒有解決這個問題的方法?

+0

問題是:你爲什麼想要做這樣的事情?枚舉是不同元素/字符串的列表,它們也是根據一組不同的整數(默認情況下,它們的位置)來定義的。有兩個元素與相同的整數關聯會違背這樣的想法。如果你想把一組字符串關聯到一組整數(可能會重複或不重複),你應該依靠不同的方法;例如:一個「字典」。 – varocarbas

+0

你基本上試圖從多對一的關係,並試圖逆向工程的「一個」價值(即6),並找出它來自哪些「多」(即X3,X4,X5或X6)。你可以看到爲什麼會是一個問題。這就像將手機扔進一堆看似相同的手機,並希望每次都能抓到正確的手機。 –

+0

另請參見[使用具有相同的基礎類型值的條目的枚舉](https://stackoverflow.com/q/26321509/3538012) –

回答