用Flags打开枚举

时间:2014-12-29 12:32:26

标签: c# enums switch-statement

我有以下枚举

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

此问题与thisthis不重复。我尝试了两种解决方案,但对我来说都不起作用,因为如果我的枚举是Anchor.Left | Anchor.TopThing1()Thing2()会被调用,而我需要Thing3()调用。

1 个答案:

答案 0 :(得分:1)

在交换机中声明所有这些组合。 (当你开始)

清晰,易懂,易于维护。

不可怕。 (感觉有点愚蠢的关键)

毕竟,你有这些令人不快的情况,所以开关是完美的结构。