我有一个关于转换成可空枚举的问题。这是代码:
enum Digits
{
One = 1,
Two = 2
}
void Main()
{
int one = 1;
object obj = one;
var en = (Digits?) obj;
Console.WriteLine(en);
}
在第11行,我遇到了InvalidCastException
异常。
但是如果我省略该行中的'?'符号,则会得到正确的结果"One",但我不想失去'nullability'。
为了解决这个问题,我现在使用var en = (Digits?) (int?) obj;
,虽然我不确定这种解决方案的完全正确性。
但我想知道为什么在第一种情况下将枚举类型转换为可空类型失败?
我原以为将可空类型转换为以下类型:
- 如果成功,则转换为非可空类型
- 如果传递了null
,则结果也将是null
但事实似乎并非如此。