2013-07-09 7 views
5

Właśnie zauważyłem, że można stworzyć coś takiego w C#:C# teksty stałe - można mieć podwójne identyfikatory

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 
} 

Chcielibyśmy wartość wyliczenia być unikalne. W tej chwili napisałem test jednostkowy, który sprawdza, czy każda wartość jest używana tylko raz w naszym wyliczeniu. Czy istnieje lepszy sposób na wymuszenie wyjątkowości?

+1

Przeczytaj ten http://stackoverflow.com/a/8043127/1714342 i ten http://stackoverflow.com/a/8043148/1714342 – wudzik

+0

Ponieważ nie jest częścią specyfikacji. Możesz to również zrobić: 'var whatisthisidonteven = (TestEnum) 4;' Teraz, która wartość wyliczeniowa jest ??? – Will

+0

Dzięki za linki, będę wyglądać. I zmieniłem trochę moje pytanie, aby usunąć pierwszą część pytania. – Carra

Odpowiedz

4

Dobrze wyliczenia są używane do nadawania znaczenia liczbom całkowitym. Kiedy mówisz Second = 1, że nie ma sensu, ale myśleć o tym jak jeden przykład:

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

Powiedzmy 0 i 1 reprezentuje płeć, w ten sposób mężczyzna i chłopiec ma taką samą wartość płci.

+0

Przed downvoters - Oryginalne pytanie, dlaczego wartości wyliczeniowe mają te same wartości, nie pasuje do nowej edycji. – Sayse

+0

OK, przypuszczam, że w niektórych przypadkach warto mieć wiele wartości wyliczeniowych z tym samym identyfikatorem. – Carra

+0

Działa również w celu zdefiniowania 'Man = 1, Woman = 0, Lady = Woman, Boy = Man, Girl = Woman'. – Bobson