我在C#书中读到了这个陈述。
枚举不一定需要 遵循顺序排序,和 无需具有唯一值。
如果我理解这个陈述,这意味着其中一个是可以接受的(我不知道哪个):
1
enum EmpType
{
Manager = 1,
Grunt = 1,
Contractor = 100,
VicePresident = 9
}
2
enum EmpType
{
Manager = 10,
Manager = 1,
Contractor = 100,
VicePresident = 9
}
有人可以向我解释一下吗?我认为C#应该是C / C ++的一个子集。
答案 0 :(得分:4)
第一个有效,您可能有重复Values
不重复Names
答案 1 :(得分:3)
1是正确的,2不是。
正如书中所说,枚举不需要具有唯一的值(示例2显示具有非唯一名称的枚举)。名称必须是唯一的,因为它是编译器将其与值匹配的方式。
答案 2 :(得分:3)
实际上 - 为什么不检查:)每个枚举都是System.Enum类的子类(特别处理),每个枚举元素都是一个用文字值初始化的静态字段 - 你不能有两个具有相同名称的字段,但是可以具有相同值的字段,因此#1将起作用,#2不起作用。
答案 3 :(得分:1)
1号是可以接受的。 Number 2抛出编译时异常。您可以拥有多个等效值。但不是等同的重复名称。
例如,假设您要为公司的人事工作级别定义枚举。你有员工,管理层。工作人员包括销售部门和IT部门,如果一个人在销售或IT部门,它对您没有任何影响,无论如何,他/她都被视为员工。您可以定义以下枚举:
public enum PersonnelLevels
{
Management=0,
Sales=1,
IT=1
}
答案 4 :(得分:0)
默认的基础类型 枚举元素是int。
您可以为任何枚举元素指定任何整数值。您可以将重复值分配给不同的元素。但是,元素名称必须是唯一的。
这意味着,第一块是正确的。但是,第二块不是。