创建一个包含其他枚举值的枚举以确保值唯一时,最佳做法是什么
本文关键字:枚举 唯一 确保 最佳 是什么 一个 包含 其他 创建 | 更新日期: 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; }
}