2010-12-22 56 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