代码之家  ›  专栏  ›  技术社区  ›  Kamarey

显式设置枚举字段值的优点和缺点

  •  17
  • Kamarey  · 技术社区  · 16 年前

    enum SomeEnum
    {
       Something1 = 0,
       Something2 = 1
    }
    

    enum SomeEnum
    {
       Something1,
       Something2
    }
    

    编辑:

    10 回复  |  直到 15 年前
        1
  •  13
  •   Randolpho    16 年前

    Enum1和Enum2编译为相同的枚举。所以从编程的角度来看,没有区别。从维护的角度来看,可能有也可能没有问题。

    [Flags]

        2
  •  7
  •   Max    16 年前

    当你需要负值时,它很有用

    enum
    {
      Error = -1,
      Success = 0,
      Something1, 
      Something2,
    };
    
        3
  •  6
  •   Robert Harvey    16 年前

    enum Colors 
    { 
        Red = 1, 
        Green = 2, 
        Blue = 4, 
        Yellow = 8 
    };
    

        4
  •  3
  •   TLiebe    16 年前

    我还看到一个枚举用于表示数据库引用表中的值。在这种情况下,您需要确保枚举中的项总是与数据库表具有相同的值,并且在枚举中间插入新项不会弄乱值。

        5
  •  2
  •   BIDeveloper    16 年前

    对于所有其他选项,不要使用数字。这样,您就可以愉快地向枚举中添加其他项,而不会破坏任何其他可能引用枚举的代码。

        6
  •  1
  •   Phillip Ngan    16 年前

        7
  •  1
  •   Muad'Dib    16 年前

    这取决于你用枚举做什么。如果你将它们与[Flags]一起使用,那么你必须明确地设置它们。如果你不是,那么从编码的角度来看,任何一种方式都是可行的。然而,为了可读性或(如前所述)在数据库环境中的使用,您应该显式地设置它们。另一个考虑因素是工作场所的编码标准,以及序列化。

        9
  •  1
  •   Tim Allman    16 年前

    一个重要的值的例子是为位标志创建值,可以设置如下:

    > enum 
    {
        flag1 = 1;
        flag2 = 2;
        flag3 = 4;
    };
    
    func1(flag1 | flag3);
    
        10
  •  0
  •   user74754 user74754    13 年前

    还要考虑到,如果未设置整数支持的枚举的值,则其默认值为default(int)(或零),因此在使用隐式编号的枚举时,可能很难区分枚举值 它们被故意设置为第一种选择 。这可能是一个很好的论据,可以为枚举值显式分配整数值,并且起始整数不是零。当然,除非你将第一个值设置为“NotAssigned”或类似值。

    推荐文章