比较快速监视中的可为空的枚举值在运行应用引发异常时有效

本文关键字:应用 运行 有效 异常 枚举 监视 比较 | 更新日期: 2023-09-27 18:30:56

我有一个简单的枚举:

enum MyEnum { First = 1 }

我在以下代码中使用此枚举:

object i = 1;
MyEnum expected = MyEnum.First;         
if ((MyEnum?)i == expected) { }

现在,在运行此代码时,我得到了一个InvalidCastException.但是,当我从VS将此if语句输入快速手表时,我得到了First的期望值。

对象i来自 databasde 查询,因此也可以DBNull。在这种情况下,我将其显式设置为 null,而我必须转换为 MyEnum? 而不是 MyEnum

我该怎么做才能将可为空的枚举值与预期的枚举值进行比较?

比较快速监视中的可为空的枚举值在运行应用引发异常时有效

奇怪的解决方案:首先转换为int然后转换为枚举工作,显然我们必须首先将对象拆箱才能将其转换为可为空的枚举。

if ((MyEnum?)(int) i == expected)

但是我仍然不明白为什么快速手表能够做到这一点。