使用标志打开枚举

本文关键字:枚举 标志 | 更新日期: 2023-09-27 18:35:30

我有以下枚举

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

这个问题不是这个或这个的重复。我已经尝试了这两种解决方案,但都不适合我,因为如果我的枚举是,比如说Anchor.Left | Anchor.TopThing1()Thing2()将被调用,而我需要Thing3()被调用。

使用标志打开枚举

在开关中声明所有这些组合。(当你开始的时候)

它清晰,易于理解,可维护。

不可怕。(感觉有点傻)

毕竟,您有这些分散的情况,因此开关是完美的结构。