枚举未设置时会发生什么?

Erw*_*ers 1 c# enums casting

我有以下演员:

int myInteger = (int)myItem.EnumValue;
Run Code Online (Sandbox Code Playgroud)

枚举是:

public enum EnumValue
{
     Yes= 0,
     No = 1
}
Run Code Online (Sandbox Code Playgroud)

根据我的观察,似乎当未设置myItem上的EnumValue时,EnumValue的值默认设置为Yes,然后转换为0.

为什么枚举不为空?我的观察是否正确,为什么会这样?

p.s*_*w.g 9

Enum是值类型,所以就像int它们和其他值类型一样,它们不能为空.相反,它们的默认值相当于0(因为您已将枚举值指定Yes为0,在这种情况下,这是默认值).

如果你想要一个可以为空的枚举,请使用Nullable<EnumValue>EnumValue?简称.

进一步阅读