2011-02-17 28 views
7
public enum Animal 
{ 
    Dog = 1, 
    Cat = 2, 
    Cow = 3 
} 

int animalID = 4; 
if ((Animal)animalID == Animal.Dog) // does not throw exception 

animalID不能鑄造到Animal
將枚舉轉換爲整數失敗時,爲什麼我不能獲得InvalidCastException爲什麼在將枚舉強制轉換爲整數失敗時無法獲取InvalidCastException?

+0

丹尼爾如果你真的分配劇組到另一個對象和分配後檢查對象的值會發生什麼?你只是與==比較是否返回一個值,但實際上並沒有真正分配任何東西... – 2011-02-17 09:07:00

回答

9

因爲它不是無效的投射。

您正在鑄制的值爲超出範圍(在本例中爲enum),但它不是無效的。

由於enum的批准類型是byte,sbyte,short,ushort,int,uint,long或ulong,因此從整數到enum的強制轉換是完全合法的。

Source - MSDN

相關問題