2013-07-09 2 views
5

Ich habe gerade bemerkt, dass Sie so etwas wie dies in C# erstellen:C# Aufzählungen - Mögliche haben doppelte Ids

enum TestEnum 
{ 
    First = 1, 
    Second = 1, 
    Third = 2 
} 

[TestMethod] 
public void Test() 
{ 
    TestEnum test = TestEnum.First; 
    var en = (TestEnum) 1;//And en is now set to First 
} 

würden wir den Aufzählungen Wert mag einzigartig sein. Im Moment habe ich einen Komponententest geschrieben, der überprüft, dass jeder Wert nur einmal in unserem Enum verwendet wird. Gibt es einen besseren Weg, die Einzigartigkeit zu erzwingen?

+1

lesen Sie diese http://StackOverflow.com/A/8043127/1714342 und diese http://StackOverflow.com/A/8043148/1714342 – wudzik

+0

Weil es nicht Teil der Spezifikationen ist. Sie können dies auch tun: 'var whatishisidonteven = (TestEnum) 4;' Nun, welcher Enum-Wert ist das? – Will

+0

Danke für die Links, ich werde es mir ansehen. Und änderte meine Frage ein wenig, um den ersten Teil der Frage zu entfernen. – Carra

Antwort

4

Well enums werden verwendet, um Ganzzahlen Bedeutung zu geben. Wenn Sie sagen, Second = 1, die keinen Sinn macht, aber denken Sie an einem Beispiel wie, dass man:

enum HumanEnum 
{ 
    Man = 1, 
    Woman = 0, 
    Lady = 0, 
    Boy = 1, 
    Girl = 0 
} 

Lasst uns sagen, 0 und 1, das Geschlecht darstellt, auf diese Weise Man and Boy hat den gleichen Geschlechts Wert.

+0

Bevor downwoters - Original Frage gefragt, warum Enums die gleichen Werte haben, passt nicht neue Bearbeitung obwohl – Sayse

+0

Ok, ich denke, es macht in einigen Fällen Sinn mehrere Enum-Werte mit der gleichen ID zu haben. – Carra

+0

Es funktioniert auch zu definieren: Mann = 1, Frau = 0, Dame = Frau, Junge = Mann, Mädchen = Frau. – Bobson