Я пишу функцию, которая принимает Enum
и приводит к uint
. Из того, что я видел при приведении к int
, вы должны сначала привести его к объекту: (int) (object) myEnumValue
. Если вы напишите (int) myEnumValue
, вы получите исключение времени компиляции.
Теперь, когда я попытался привести его к уинтам, я ожидал, что (uint) (object) myEnumValue
будет в порядке. Он хорошо компилируется, но при запуске генерирует InvalidCastException
. Чтобы заставить его работать, я использовал
(uint) (int) (object) myEnumValue
Я думаю, это выглядит забавно, поэтому я вполне счастлив, но почему это так?
Возможно, было бы правильнее спросить, почему невозможно привести object
к uint
, но меня интересует, есть ли другой способ перейти от Enum
к uint
. Есть ли?
Edit:
Контекст - это функция, примерно такая:
public static uint ToUInt (Enum e)
{
return (uint) (int) (object) e;
}
Редактировать 2:
Лучшее решение было упомянуто thecoop:
Convert.ToUInt32(e)