枚举可以从可为空的原始类型继承吗?

Can Enums Inherit From Nullable Primitive Types?

我正在查看一个 XML 规范,其中指出需要将枚举编码为可为 null uInt8

<enum name="FTI" encodingType="uInt8NULL">
    <validValue description="Backup" name="Backup">0</validValue>
    <validValue description="Primary" name="Primary">1</validValue>

因此,我创建了一个枚举,却发现它不能从可为空的原始类型继承。

有什么办法可以解决这个问题,还是设计使然?

public enum KeepAlivedLapsed : Byte?
{
    NotLapsed = 0,
    Lapsed = 1,
}

错误: CS1008 类型 byte、sbyte、short、ushort、int、uint、long 或 ulong 预期

继承自Nullable<Byte>时出现同样的错误。

您需要做的是创建一个普通枚举,然后将其用作可空类型:

public enum KeepAlivedLapsed : Byte
{
    NotLapsed = 0,
    Lapsed = 1,
}

KeepAlivedLapsed? value = null;