Why don't I get InvalidCastException when casting enum to integer fails?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 由 翻译 强力驱动 问题: public enum Animal { Dog = 1 , Cat = 2 , Cow = 3 } int animalID = 4 ; if (( Animal ) animalID == Animal . Dog ) // does not throw exception animalID can't be casted to Animal . Why don't I get InvalidCastException when casting enum to integer fails? 回答1: Because it's not an invalid cast. The value you are casting is out of range for the enum (in this case) but it's not invalid. As the approved types for an enum are byte, sbyte, short, ushort, int, uint, long, or ulong a cast from integer to enum is perfectly legal. Source - MSDN