Я понимаю, что это не то, что вы спросили, но это то, что вы могли бы оценить.
Я обнаружил, что вы можете найти целочисленное значение перечисления без приведения, если вы знаете, каково минимальное значение перечисления:
public enum Complexity { Low = 0, Normal = 1, Medium = 2, High = 3 }
int valueOfHigh = Complexity.High - Complexity.Low;
Это не будет работать с Приоритетом, если вы не добавили минимальное значение 0 или не добавили 1 обратно:
public enum Priority { Normal = 1, Medium = 2, High = 3, Urgent = 4 }
int valueOfUrgent = Priority.Urgent - Priority.Normal + 1;
Я считаю эту технику намного более эстетически привлекательной, чем приведение к int.
Я не совсем уверен, что произойдет, если у вас есть перечисление, основанное на байтах или длинных - я подозреваю, что вы получите байтовые или длинные значения разностей.