如何将枚举转换为int?

时间:2010-12-22 12:43:12

标签: c# .net enumeration

我有一个接受枚举(The base class)作为参数的函数:

public void SomeFunction(Enum e);

但是由于某些原因我无法将其转换为int。我可以得到枚举值的名称,但不是它的整数表示 我真的不关心枚举的类型,我只需要积分值。 我应该通过int吗?或者我在这里做错了什么?

3 个答案:

答案 0 :(得分:13)

int i = Convert.ToInt32(e);

无论枚举的底层存储如何,这都将起作用,而如果枚举存储在InvalidCastException以外的任何其他内容中,则其他解决方案将抛出int32(例如,byteshort

答案 1 :(得分:7)

Enum实际上并不是一个令人困惑的问题。它是枚举的盒装副本;仍然,以下应该有效:

int i = (int)(object)e;

(此(object)广告添加一个框,因为已装箱

另请注意,并非所有枚举都基于int;对于非int枚举,这种拆箱技巧可能会失败。

答案 2 :(得分:0)

Int32 intValue = (Int32)Enum.Parse(e.GetType(), e.ToString());