Ottenere un valore int da enum in C#

Ho una classe chiamata Questions (plurale). In questa classe c'è un enum chiamato Question (singolare) che assomiglia a questo.

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

Nella classe Questions, ho una funzione get(int foo) che restituisce un oggetto Questions per quel foo. C'è un modo semplice per ottenere il valore intero dall'enum in modo da poter fare qualcosa come Questions.Get(Question.Role)?

Soluzione

Basta lanciare l'enum, ad esempio

int something = (int) Question.Role;

Quanto sopra funzionerà per la stragrande maggioranza degli enum che vedrete in natura, poiché il tipo di base predefinito per un enum è int.

Tuttavia, come fa notare cecilphillip, gli enum possono avere diversi tipi sottostanti. Se un enum è dichiarato come uint, long o ulong, dovrebbe essere castato al tipo dell'enum; ad esempio per

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

si dovrebbe usare

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

Il risultato sarà valore == 2.

Commentari (9)

È più facile di quanto si pensi: un enum è già un int. Ha solo bisogno di essere ricordato:

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