我有一个接受枚举(The base class)作为参数的函数:
public void SomeFunction(Enum e);
但是由于某些原因我无法将其转换为int。我可以得到枚举值的名称,但不是它的整数表示 我真的不关心枚举的类型,我只需要积分值。 我应该通过int吗?或者我在这里做错了什么?
答案 0 :(得分:13)
int i = Convert.ToInt32(e);
无论枚举的底层存储如何,这都将起作用,而如果枚举存储在InvalidCastException
以外的任何其他内容中,则其他解决方案将抛出int32
(例如,byte
或short
)
答案 1 :(得分:7)
Enum
实际上并不是一个令人困惑的问题。它是枚举的盒装副本;仍然,以下应该有效:
int i = (int)(object)e;
(此(object)
广告不添加一个框,因为已已装箱
另请注意,并非所有枚举都基于int
;对于非int
枚举,这种拆箱技巧可能会失败。
答案 2 :(得分:0)
Int32 intValue = (Int32)Enum.Parse(e.GetType(), e.ToString());