我希望设计一个标志枚举,但由两个用例共享:
例如:我已经定义了以下内容
[Flags]
public enum Answer
{
Yes = 1,
No = 2,
Choice1 = 1,
Choice2 = 2,
Choice3 = 4,
Choice4 = 8,
}
将此组合起来的原因是共享一致的界面(例如,流程答案)。有没有反对这种设计的论据? 谢谢!
答案 0 :(得分:2)
[Flags]
public enum Answer
{
No = 0,
Choice1 = 1,
Choice2 = 2,
Choice3 = 4,
Choice4 = 8,
Yes = 0x80000000,
}
答案 1 :(得分:1)
我不会这样做。原因如下:
class Program
{
[Flags]
public enum Answer
{
Yes = 1,
No = 2,
Choice1 = 1,
Choice2 = 2,
Choice3 = 4,
Choice4 = 8,
}
static void Main(string[] args)
{
int SomeInt = (int)Answer.Choice1;
Console.WriteLine((Answer)SomeInt);
Console.ReadKey();
}
}
结果是
这很有道理,显然它在语法上是正确的,但是你很难维护这样的枚举。它将匹配枚举的第一个正确值。这是我认为可以改进的逻辑,以便限制/消除混淆。
我会这样做吗? 否强>
答案 2 :(得分:0)
1)如果您想检查问题是否得到回答,那么您可以检查值1(如果值1表示没有回答)。 2)如果设置了任何选项,那么您可以假设您的答案正在被回答。
public enum Answer {
No = 1,
Choice1 = 2,
Choice2 = 3,
Choice3 = 4,
Choice4 = 8
}
希望这有帮助!