代码之家  ›  专栏  ›  技术社区  ›  THX-1138

枚举中的特殊成员:全部和无[重复]

  •  1
  • THX-1138  · 技术社区  · 14 年前


    How to use Enum with aditional options (All, None)

    我有一个枚举

    public enum Faction {
        Aliance,
        Horde
    }
    

    在给定的域中有两个派系,这两个派系在上面的集合中列出。

    问题: 有什么论据支持和反对包括特殊成员,如:无,和所有在 enum

    解决方法是有另一个枚举,它将与一个派系建立一个隶属关系模型,在这种情况下,它是 适合于包含诸如All和None之类的元素。

    为了模型的正确性,我应该创建派系从属枚举吗?或者我应该节省自己额外的打字和查看派系枚举,好像它 派系归属?

    编辑: 的副本 How to use Enum with additional options (All, None)

    4 回复  |  直到 8 年前
        1
  •  4
  •   Trillian    14 年前

    All None 在处理打算用作位字段的枚举时(应该标记位字段),大多数情况下是有意义的 [Flags] ). 在这种情况下,第一个标志的值应为1,第二个标志的值应为2。那么, 可以采用默认值0,表示没有派系从属关系。这个 FactionAffiliations .

    如果您没有处理标志,通常最好不要包含 价值观。你的大部分程序不需要这个,所以这是一个特殊的情况,你不必测试。如果你需要这个 没有 Faction? . 可为null的枚举比枚举更能表示没有值 枚举数。

    我假设您的代码是C#,但大多数建议应该用其他语言编写。

        2
  •  2
  •   Carl Manaster    14 年前

        3
  •  1
  •   James Curran    14 年前

    我从一个更实际的角度来看待它的使用,而不是从纯OO设计的角度。

    如果是这样,那么应该使用两个单独的枚举。

        4
  •  0
  •   Task    14 年前

    我想说的是,你的执行应该得到改进。
    您正在使用枚举来模拟一个简单的布尔状态。
    完全去掉枚举并用布尔属性替换它:“IsAlliance”或“IsHorde”,以两者中的任意一个为准。 枚举是多种可能性的模型,您没有多种可能性。