C# 创建包含来自其他枚举的值的枚举以确保值唯一时,最佳做法是什么?

C# 创建包含来自其他枚举的值的枚举以确保值唯一时,最佳做法是什么?,c#,enums,C#,Enums,我有以下列举: public enum TestEnum1{ Null = 0, A, B, C, } public enum TestEnum2{ Null = 0, D, E, F, } public enum TestEnum3{ Null = 0, A = TestEnum1.A, B = TestEnum1.B, D = TestEnum2.D, } 在上述情况下,TestEnum3重

我有以下列举:

public enum TestEnum1{
    Null = 0,
    A,
    B,
    C,
}

public enum TestEnum2{
    Null = 0,
    D,
    E,
    F,
}

public enum TestEnum3{
    Null = 0,
    A = TestEnum1.A,
    B = TestEnum1.B,
    D = TestEnum2.D,
}
在上述情况下,
TestEnum3
重用
TestEnum 1和2
中的值,其中一些值将重叠。一个简单的方法是使TestEnum1.A&B=一些数字,但是如果你有很多枚举,这似乎会导致问题。

试试这个

    public enum TestEnum1{
    Null = 0,
    A,
    B,
    C,
    Last
}

    public enum TestEnum2{
    Null = 0,
    D = TestEnum1.Last,
    E,
    F,
    Last
}

public enum TestEnum3{
    Null = 0,
    A = TestEnum2.Last,
    B, 
    D,
}

枚举是C#中的值类型

您概述的代码不会重用任何值,您只是从另一个变量中分配了一个变量


依我看,最好的做法是直接分配整数值,而不是使用另一个枚举中的整数值。

您已经看到了混合枚举将导致的问题,因此您提出了问题。
所以我认为“最佳实践”应该是不要这样做

如果确实必须以某种方式合并它们,可以创建一个包含一个或另一个枚举的结构

public struct EnumsCombined
{
     public EnumsCombined(TestEnum1 v) { Enum1 = v; }
     public EnumsCombined(TestEnum2 v) { Enum2 = v; }

     public TestEnum1? Enum1 { get; private set; }
     public TestEnum2? Enum2 { get; private set; }
}

它并没有真正重复使用它们——它们可能有相同的整数值,但它们仍然不同。你到底想做什么?可能
enum
不是解决问题的正确方法。请将分号替换为逗号,使其至少可编译。的可能重复项