2013-07-09 6 views
5

を持っている私はちょうどあなたがC#で、このようなものを作成することができますことに気づい:C#の列挙型 - 可能性のあるダブル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 
} 

我々は一意であることが列挙型の値をしたいと思います。今、各値がenumで一度しか使われていないことをチェックするユニットテストを書いています。一意性を強制する良い方法はありますか?

+1

これはhttp://stackoverflow.com/a/8043127/1714342とこれを読むhttp://stackoverflow.com/a/8043148/1714342 – wudzik

+0

これは仕様の一部ではないためです。また、あなたはこれを行うことができます: 'var whatisthisidonteven =(TestEnum)4;'今、enumの値は? – Will

+0

リンクをありがとう、私は一見を持っています。質問の最初の部分を削除するために私の質問を少し変更しました。 – Carra

答えて

4

整数に意味を与えるためによく使われる列挙型です。あなたは第二= 1と言うときに意味をなすが、そのような例を考えていないこと:

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

のは、0と1が男と少年は、同じ性別の値を持つこのように、性別を表しましょう。

+0

downvotersの前 - 元の質問はなぜenumが同じ値を持つことができるのか質問しましたが、 – Sayse

+0

でもOKですが、同じidで複数のenum値を持つことが理にかなっていると思います。 – Carra

+0

'Man = 1、Woman = 0、Lady = Woman、Boy = Man、Girl = Woman'も定義しています。 – Bobson