Int reikšmės gavimas iš enumo naudojant C#

Turiu klasę, kuri vadinasi Klausimai (daugiskaita). Šioje klasėje yra enumas, vadinamas Klausimas (vienaskaita), kuris atrodo taip.

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

Klasėje Questions turiu funkciją get(int foo), kuri grąžina Questions objektą tam foo. Ar yra paprastas būdas gauti sveikojo skaičiaus reikšmę iš sąrašo, kad galėčiau padaryti kažką panašaus į Questions.Get(Question.Role)?

Sprendimas

Tiesiog atvaizduokite enumą, pvz.

int something = (int) Question.Role;

Pirmiau aprašytas būdas tinka daugumai enumų, kuriuos galima pamatyti gamtoje, nes numatytoji pagrindinė enumo rūšis yra int.

Tačiau, kaip nurodo cecilphillip, enumai gali turėti skirtingus pagrindinius tipus. Jei enumas deklaruojamas kaip uint, long arba ulong, jis turėtų būti perskaičiuotas į enumo tipą; pvz.

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

reikėtų naudoti

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

Rezultatas bus value == 2.

Komentarai (9)

Tai paprasčiau, nei manote - enum jau yra int. Apie tai reikia tik priminti:

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