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

本文关键字:枚举 唯一 确保 最佳 是什么 一个 包含 其他 创建 | 更新日期: 2023-09-27 18:00:34

我有这些枚举:

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 = some number,但如果你有很多枚举,这似乎会引起问题。

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

试试这个

    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#中的值类型。

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

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

您已经可以看到将枚举混合在一起会导致的问题,因此您提出了问题
所以我认为"最佳实践"应该是…不要这样做

如果你真的必须以某种方式合并它们,你可以制作一个包含一个或另一个枚举的结构。

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; }
}