我正在编写一个函数,该函数将
现在,当我尝试将其转换为
Enum
转换为uint
。从我所见到的情况来看,当进行int
类型转换时,您必须先将其转换为对象:(int) (object) myEnumValue
。如果您直接写(int) myEnumValue
,则会出现编译时异常。现在,当我尝试将其转换为
uint
时,我期望(uint) (object) myEnumValue
是正确的。它可以很好地编译,但运行时会生成InvalidCastException
。因此,为了使其正常工作,我使用了(uint) (int) (object) myEnumValue
我认为这看起来很有趣,所以我非常高兴,但为什么会这样呢?
也许更正确的做法是问为什么无法将 object
强制转换为 uint
,但我想知道是否有其他方法从一个 Enum
转换为 uint
。有吗?
编辑:
背景是一个函数,类似于这样:
public static uint ToUInt (Enum e)
{
return (uint) (int) (object) e;
}
编辑2:
最佳解决方案如thecoop所述:
Convert.ToUInt32(e)
System.Int32
继承(也许你可以用一些巫术黑魔法,但那不是相关的)。枚举从System.Enum
继承。正确的说法是底层类型是int
。 - R. Martinho Fernandes