Enum 可以包含其他 Enum 吗?

Ahm*_*eim 5 c# silverlight ienumerable enums

Enum 可以包含其他 Enum 元素加上它自己的元素吗?

public enum CardSuit
{
    spades,
    hearts,
    diamonds,
    clubs 
}

public enum GameSuit
{
    spades,        //        These are 
    hearts,        //        the same
    diamonds,      //      " CardSuit "
    clubs,         //        elements

    suns    //             " GameSuit " special element
}
Run Code Online (Sandbox Code Playgroud)

我们可以在 GameSuit 中包含 CardSuit 而不重复输入相同的元素吗?

Kir*_*oll 4

遗憾的是,没有,使用枚举没有很好的解决方案来满足您的需求。public static readonly您还可以尝试其他选项,例如特定“类似枚举”类型的一系列字段:

public class CardSuit 
{
    public static readonly CardSuit Spades = new CardSuit();
    public static readonly CardSuit Hearts = new CardSuit();
    ...
}

public enum GameSuit : CardSuit 
{
    public static readonly GameSuit Suns = new GameSuit();
}
Run Code Online (Sandbox Code Playgroud)

在实践中,尽管没有switch声明支持,但大多数情况下这也是可行的。用法可能是这样的:

var cardSuit = ...;
if (cardSuit == CardSuit.Spades || cardSuit == GameSuit.Suns) { ... }
Run Code Online (Sandbox Code Playgroud)