为什么将枚举转换为整数失败时我没有收到InvalidCastException异常?

8
public enum Animal
{
    Dog = 1,
    Cat = 2,
    Cow = 3
}

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

无法将animalID强制转换为Animal
当将枚举类型转换为整数失败时,为什么我没有收到InvalidCastException


丹尼尔,如果你将强制类型转换分配给另一个对象并在分配后检查对象的值会发生什么?你只是使用“==”进行比较,它确实返回一个值,但实际上并没有真正分配任何东西... - Davide Piras
1
请参考以下链接:https://dev59.com/zHRB5IYBdhLWcg3wc280 - PHeiberg
2个回答

11

因为这不是无效的转换。

你要转换的值对于该枚举类型(在这种情况下)超出了范围,但它并非无效。

由于枚举类型的批准类型是byte、sbyte、short、ushort、int、uint、long或ulong,从整数到枚举的转换是完全合法的。

来源 - MSDN


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接