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
不是解决问题的正确方法。请将分号替换为逗号,使其至少可编译。的可能重复项