当我知道它不是null时,这是必需的吗?

Sar*_*els 2 c# null casting

我有以下内容:

MyEnum? maybeValue = GetValueOrNull();

if (null != maybeValue)
{
    MyEnum value = (MyEnum)maybeValue;
}
Run Code Online (Sandbox Code Playgroud)

我想知道的是,(MyEnum)在类型实例上是否需要显式强制转换MyEnum?.这似乎是一个简单的问题,我只是觉得有些偏执,如果我只是MyEnum value = maybeValue在那个if语句中做的话可能会有一些运行时错误.

Bre*_*len 8

对于可以为空的类型,您可以这样做

if (maybeValue.HasValue)
{
    MyEnum value = maybeValue.Value;
}
Run Code Online (Sandbox Code Playgroud)


Jas*_*n D 6

由于您使用的是可空类型,请尝试使用

if(maybeValue.HasValue)
{
    MyEnum value = maybeValue.Value;  // no cast needed! Yay!
}
Run Code Online (Sandbox Code Playgroud)