优点和缺点明确设置枚举字段的值

Kam*_*rey 13 .net theory

是否最好明确设置枚举字段而不是仅定义其名称?例如Enum1与Enum2的任何利弊?

Enum1:

enum SomeEnum
{
   Something1 = 0,
   Something2 = 1
}
Run Code Online (Sandbox Code Playgroud)

Enum2:

enum SomeEnum
{
   Something1,
   Something2
}
Run Code Online (Sandbox Code Playgroud)

PS此问题与存储在数据库中的枚举无关,需要明确设置值.

编辑:说所有值都是0,1等等......它们不是负数或其他东西.

Ran*_*pho 12

Enum1和Enum2编译为相同的枚举.因此从编程的角度来看,没有区别.从维护的角度来看,可能存在问题,也可能没有问题.

一方面,[Flags]枚举绝对需要声明显式值; 他们需要成为2的权力值.

另一方面,显式值可以简单地通过创建将来不能或不应该更改的值来降低可维护性.

通常,我更喜欢不声明显式值,除非由于某些原因值本身很重要 - 例如,如果您的C#枚举是包装C枚举.


Max*_*Max 7

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

enum
{
  Error = -1,
  Success = 0,
  Something1, 
  Something2,
};
Run Code Online (Sandbox Code Playgroud)

  • @Randolpho:enum.s通常用于包装其他应用程序的API.例如:围绕Google Data API的C#/ .NET包装器.如果你可以枚举所有返回值,包括发起者决定使用的负数,它会增加很多. (6认同)

Rob*_*vey 5

如果需要不连续的值,可以使用Enum1.

enum Colors 
{ 
    Red = 1, 
    Green = 2, 
    Blue = 4, 
    Yellow = 8 
};
Run Code Online (Sandbox Code Playgroud)

此外,显式设置数字更容易阅读,并且在中间添加值不会更改任何其他值.

  • 没错,但是将它添加到最后也不会影响值! (2认同)