c# - 为什么在将枚举转换为整数失败时我没有得到 InvalidCastException?

标签 c# .net enums

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

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

animalID 无法转换为 Animal
将枚举转换为整数失败时,为什么我没有得到 InvalidCastException

最佳答案

因为它不是无效的转换。

您输入的值超出枚举范围(在本例中),但它并非无效。

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

Source - MSDN

关于c# - 为什么在将枚举转换为整数失败时我没有得到 InvalidCastException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5026876/

相关文章:

c# - 从托管代码调用非托管 DLL 函数时出错

c# - 单选按钮属性集的 ListView 未命中

c# - 将触发器绑定(bind)到父集合中的元素

c# - Distinct 不使用 LINQ to Objects

C# 编译器包括 EXE 中的本地路径

c# - 键枚举中的感叹号

swift - 为什么 Enum 作为协议(protocol)要求中的可选行为表现得很奇怪?

c# - MIDI 入门

具有相似行为的 C# 多按钮

c++ - MSVC 枚举调试