2010-12-22 70 views
5

我有一个接受枚举(The base class)作为参数的函数:如何将Enum转换为int?

public void SomeFunction(Enum e); 

但是我不能因为某些原因将它转换成int。我可以得到枚举值的名称,但不是它的整数表示。
我真的不在乎枚举的类型,我只是需要整数值。 我应该传递一个int吗?或者我在这里做错了什么?

+0

你究竟想要施展如何? – annakata 2010-12-22 12:44:38

+1

@annakata我会猜* *`(INT)e`,这使“无法转换类型‘System.Enum’到‘廉政’” – 2010-12-22 12:48:38

回答

7

Enum实际上不是一个枚举...混乱。这是一个枚举的盒装副本;仍然,下面应该工作:

int i = (int)(object)e; 

(这(object)投不添加一个盒子,因为它是已经盒装)

另请注意,并非所有的枚举基于int;这个拆箱技巧可能会失败,因为非int枚举。

0
Int32 intValue = (Int32)Enum.Parse(e.GetType(), e.ToString()); 
13
int i = Convert.ToInt32(e); 

如果枚举存储在比int32其他任何这无论工作枚举的底层存储的,而其他的解决方案将抛出一个InvalidCastException(比方说,一个byteshort