使用int作为枚举有什么意义

Joe*_*Joe 7 c# enums coding-style

为什么很多人都这样做:

public enum EmployeeRole
{
  None = 0,
  Manager = 1,
  Admin = 2,
  Operator = 3
}
Run Code Online (Sandbox Code Playgroud)

而不只是做:

public enum EmployeeRole
{
  None,
  Manager,
  Admin,
  Operator
}
Run Code Online (Sandbox Code Playgroud)

有优势吗?

jas*_*son 4

有优点吗?

可维护性。假设这些整数值最终保留在数据库中。您不希望将来向枚举添加新值并更改值,因为您插入值的方式会改变未指定的值。

明晰。明确是一件好事。再次假设我们正在从某个遗留应用程序的数据库中读取整数。因此,这些代码已经具有特定的含义,我们希望明确地与它们保持一致。我们可以说

public enum EmployeeRole {
    None,
    Manager,
    Admin,
    Operator
}
Run Code Online (Sandbox Code Playgroud)

也许这与遗留规范完全一致,或者我们可以说

public enum EmployeeRole {
    None = 0,
    Manager = 1,
    Admin = 2,
    Operator = 3
}
Run Code Online (Sandbox Code Playgroud)

现在可以更轻松地了解我们是否符合旧规范。