将多个枚举组合到主枚举列表中

Xan*_*ham 16 c# enums combinations

是否可以将多个枚举组合在一起?以下是我希望看到的代码示例:

enum PrimaryColors
{
   Red,
   Yellow,
   Blue
}

enum SecondaryColors
{
   Orange,
   Green,
   Purple
}

//Combine them into a new enum somehow to result in:
enum AllColors
{
   Red,
   Orange,
   Yellow,
   Green,
   Blue,
   Purple
}
Run Code Online (Sandbox Code Playgroud)

无论它们是什么顺序,或者它们的支持数量是什么,我只是希望能够将它们组合起来.

对于上下文,这是因为我正在处理的程序的多个类将具有与它们所做的相关联的枚举.我的主程序将读取每个支持类中可用的所有枚举,并创建可用命令的可用枚举的主列表(枚举用于).

编辑:这些枚举的原因是因为我的主程序正在读取要在特定时间执行的命令列表,所以我想读入文件,看看其中的命令是否与我的一个枚举相关联,以及如果是,请将其放入要执行的命令列表中.

Jep*_*sen 7

不确定我是否准确理解.但你可以List<>像这样制作所有的值:

var allColors = new List<Enum>();

allColors.AddRange(Enum.GetValues(typeof(PrimaryColors)).Cast<Enum>());
allColors.AddRange(Enum.GetValues(typeof(SecondaryColors)).Cast<Enum>());
Run Code Online (Sandbox Code Playgroud)

而不是List<Enum>你也可以使用HashSet<Enum>.在任何情况下,因为你指定一个PrimaryColorSecondaryColor一个类型(即System.Enum),你得到拳击,但这只是一个技术细节(可能).


svi*_*ick 6

这些枚举的原因是因为我的主程序正在读取要在特定时间执行的命令列表,所以我想读入文件,看看其中的命令是否与我的一个枚举相关联,如果是是,将其放入要执行的命令列表中.

这似乎你不想要三种不同的enum类型,你想要一种类型(你称之为"主enum")以及某种方式来决定某个值属于哪个子枚举.为此,您可以使用主枚举中的值集合,或者a switch.

例如:

enum Color
{
   Red,
   Orange,
   Yellow,
   Green,
   Blue,
   Purple
}

bool IsPrimaryColor(Color color)
{
    switch (color)
    {
    case Color.Red:
    case Color.Yellow:
    case Color.Blue:
        return true;
    default:
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

此外,您应该使用单数名称作为enum类型(除非它是一个标志enum).