2013-07-09 13 views
5

Ho appena notato che è possibile creare qualcosa di simile in C#:C# enumerazioni - Possibilità di doppia id

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 
} 

vorremmo che il valore di enumerazioni di essere unico. In questo momento, ho scritto un test unitario che controlla che ogni valore sia usato una volta sola nel nostro enum. C'è un modo migliore per forzare l'unicità?

+1

leggi questo http://stackoverflow.com/a/8043127/1714342 e questo http://stackoverflow.com/a/8043148/1714342 – wudzik

+0

Perché non fa parte delle specifiche. Inoltre, puoi fare questo: 'var whatisthisidonteven = (TestEnum) 4;' Ora, quale valore enum è quello ?? – Will

+0

Grazie per i link, darò un'occhiata. E ho cambiato la mia domanda un po 'per rimuovere la prima parte della domanda. – Carra

risposta

4

Le enumerazioni vengono utilizzate per dare un significato ai numeri interi. Quando si dice Seconda = 1 che non ha senso, ma pensare a un esempio come quello:

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

Diciamo 0 e 1 rappresenta il genere, in questo modo, Man and Boy ha lo stesso valore di genere.

+0

Prima di downvoters - La domanda originale chiedeva perché le enumerazioni possono avere gli stessi valori, non si adatta alla nuova modifica anche se – Sayse

+0

Ok, suppongo che abbia senso in alcuni casi avere più valori enum con lo stesso id. – Carra

+0

Funziona anche per definire 'Man = 1, Woman = 0, Lady = Woman, Boy = Man, Girl = Woman'. – Bobson