我有一个接受枚举(The base class)作为参数的函数:如何将Enum转换为int?
public void SomeFunction(Enum e);
但是我不能因为某些原因将它转换成int。我可以得到枚举值的名称,但不是它的整数表示。
我真的不在乎枚举的类型,我只是需要整数值。 我应该传递一个int吗?或者我在这里做错了什么?
我有一个接受枚举(The base class)作为参数的函数:如何将Enum转换为int?
public void SomeFunction(Enum e);
但是我不能因为某些原因将它转换成int。我可以得到枚举值的名称,但不是它的整数表示。
我真的不在乎枚举的类型,我只是需要整数值。 我应该传递一个int吗?或者我在这里做错了什么?
Enum
实际上不是一个枚举...混乱。这是一个枚举的盒装副本;仍然,下面应该工作:
int i = (int)(object)e;
(这(object)
投不添加一个盒子,因为它是已经盒装)
另请注意,并非所有的枚举基于int
;这个拆箱技巧可能会失败,因为非int
枚举。
Int32 intValue = (Int32)Enum.Parse(e.GetType(), e.ToString());
int i = Convert.ToInt32(e);
如果枚举存储在比int32
其他任何这无论工作枚举的底层存储的,而其他的解决方案将抛出一个InvalidCastException
(比方说,一个byte
或short
)
你究竟想要施展如何? – annakata 2010-12-22 12:44:38
@annakata我会猜* *`(INT)e`,这使“无法转换类型‘System.Enum’到‘廉政’” – 2010-12-22 12:48:38