C#でenumからint型の値を取得する

Questions(複数形)というクラスがあります。このクラスにはQuestion`(単数形)というenumがあり、次のようになっています。

public enum Question
{
    Role = 2,
    ProjectFunding = 3,
    TotalEmployee = 4,
    NumberOfServers = 5,
    TopBusinessConcern = 6
}

Questionsクラスの中には、get(int foo)関数があり、この関数はfooに対するQuestionsオブジェクトを返します。Questions.Get(Question.Role)のようなことができるように、enumから整数値を取得する簡単な方法はありますか?

ソリューション

enumをキャストするだけで、例えば次のようになります。

int something = (int) Question.Role;

上記の方法は、自然界で目にする大半の列挙型で動作します。なぜなら、列挙型のデフォルトの基本型は int だからです。

しかし、cecilphillipが指摘するように、列挙型は異なる基本型を持つことができます。 enum が uint, long, ulong として宣言されている場合は、enum の型にキャストする必要があります。

enum StarsInMilkyWay:long {Sun = 1, V645Centauri = 2 .. Wolf424B = 2147483649};

の場合は

long something = (long)StarsInMilkyWay.Wolf424B;
解説 (12)
Question question = Question.Role;
int value = (int) question;

結果は value == 2 となります。

解説 (9)

案外簡単です。enumはすでにint型です。 それを思い出すだけでいいのです。

int y = (int)Question.Role;
Console.WriteLine(y); // prints 2
解説 (2)