我有以下演员表:
int myInteger = (int)myItem.EnumValue;
枚举在哪里:
public enum EnumValue
{
Yes= 0,
No = 1
}
根据我的观察,似乎未设置myItem上的EnumValue时,EnumValue的值默认情况下设置为Yes,然后强制转换为0。
为什么枚举不为空?我的观察正确吗,为什么呢?
最佳答案
Enum
是值类型,因此与int
的值和其他值类型一样,它们不能为null。相反,它们的默认值等于0(因为您已将枚举值Yes
设置为0,所以在这种情况下为默认值)。
如果您想使用可为空的枚举,请简短地使用Nullable<EnumValue>
或EnumValue?
。
进一步阅读
Value Types (C# Reference)
enum (C# Reference)
Nullable Types (C# Programming Guide)
关于c# - 如果未设置枚举,会发生什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23682941/