Έχω μια κλάση που ονομάζεται Questions
(πληθυντικός). Σε αυτή την κλάση υπάρχει ένα enum που ονομάζεται Question
(ενικός) το οποίο μοιάζει ως εξής.
public enum Question
{
Role = 2,
ProjectFunding = 3,
TotalEmployee = 4,
NumberOfServers = 5,
TopBusinessConcern = 6
}
Στην κλάση Questions
, έχω μια συνάρτηση get(int foo)
που επιστρέφει ένα αντικείμενο Questions
για το συγκεκριμένο foo
. Υπάρχει κάποιος εύκολος τρόπος να πάρω την ακέραια τιμή από το enum ώστε να μπορώ να κάνω κάτι σαν Questions.Get(Question.Role)
;
Απλά ρίξτε το enum, π.χ.
int something = (int) Question.Role;
Το παραπάνω θα λειτουργήσει για τη συντριπτική πλειοψηφία των enums που συναντάτε στη φύση, καθώς ο προεπιλεγμένος υποκείμενος τύπος για ένα enum είναι int
.
Ωστόσο, όπως επισημαίνει ο cecilphillip, τα enums μπορούν να έχουν διαφορετικούς υποκείμενους τύπους.
Εάν μια enum δηλώνεται ως uint
, long
ή ulong
, θα πρέπει να γίνει cast στον τύπο της enum- π.χ. για την
enum StarsInMilkyWay:long {Sun = 1, V645Centauri = 2 .. Wolf424B = 2147483649};
θα πρέπει να χρησιμοποιήσετε
long something = (long)StarsInMilkyWay.Wolf424B;
Είναι ευκολότερο απ' ό,τι νομίζετε - μια enum είναι ήδη ένα int. Απλά πρέπει να του το υπενθυμίσουμε:
int y = (int)Question.Role;
Console.WriteLine(y); // prints 2