我有一個接受枚舉(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