我有以下枚举
[Flags]
public enum Anchor
{
None = 1,
Top = 2, Bottom = 4,
Left = 8, Right = 16
}
我需要测试顶部,底部,左侧和右侧的每种可能组合,但是在开关中声明所有这些组合是非常糟糕的。
switch (anchor)
{
case Anchor.Left:
Thing1();
break;
case Anchor.Top:
Thing2();
break;
case Anchor.Left | Anchor.Top:
Thing3();
break;
}
此问题与this或this不重复。我尝试了两种解决方案,但对我来说都不起作用,因为如果我的枚举是Anchor.Left | Anchor.Top
,Thing1()
和Thing2()
会被调用,而我需要Thing3()
调用。
答案 0 :(得分:1)
在交换机中声明所有这些组合。 (当你开始)
清晰,易懂,易于维护。
不可怕。 (感觉有点愚蠢的关键)
毕竟,你有这些令人不快的情况,所以开关是完美的结构。