C#中的枚举类型

时间:2011-06-08 10:38:08

标签: c# enums

我在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 ++的一个子集。

5 个答案:

答案 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)

参考enum (C# Reference)

  

默认的基础类型   枚举元素是int。

您可以为任何枚举元素指定任何整数值。您可以将重复值分配给不同的元素。但是,元素名称必须是唯一的。

这意味着,第一块是正确的。但是,第二块不是。