C# C语言中的枚举类型#
我在一本C#book上读到了这句话 枚举不一定需要 按照顺序排列,以及 不需要具有唯一的值 如果我理解该声明,则意味着其中一项是可以接受的(我不知道是哪一项): 1.C# C语言中的枚举类型#,c#,enums,C#,Enums,我在一本C#book上读到了这句话 枚举不一定需要 按照顺序排列,以及 不需要具有唯一的值 如果我理解该声明,则意味着其中一项是可以接受的(我不知道是哪一项): 1. enum EmpType { Manager = 1, Grunt = 1, Contractor = 100, VicePresident = 9 } enum EmpType { Manager = 10, Manager = 1, Contractor = 100,
enum EmpType
{
Manager = 1,
Grunt = 1,
Contractor = 100,
VicePresident = 9
}
enum EmpType
{
Manager = 10,
Manager = 1,
Contractor = 100,
VicePresident = 9
}
2.
enum EmpType
{
Manager = 1,
Grunt = 1,
Contractor = 100,
VicePresident = 9
}
enum EmpType
{
Manager = 10,
Manager = 1,
Contractor = 100,
VicePresident = 9
}
谁能给我解释一下吗?我以为C#应该是C/C++的一个子集。1是正确的,2不是
正如书中所说,枚举不必具有唯一的值(示例2显示了具有非唯一名称的枚举)。名称必须是唯一的,因为这是编译器将其与值匹配的方式。第一个名称将是有效的,您可能有重复的
值
而不是重复的名称
数字1是可以接受的。第2个抛出编译时异常。可以有多个等效值。但不是等效的重复名称
例如,假设要为公司的人员职务级别定义枚举。你有员工,管理层。员工包括销售部门和IT部门,如果一个人从事销售或IT工作,对你来说没有任何区别,他/她被视为员工。您可以定义以下枚举:
public enum PersonnelLevels
{
Management=0,
Sales=1,
IT=1
}
提及:
的默认基础类型
枚举元素为int
可以将任何整数值指定给任何枚举元素。可以将重复的值指定给不同的图元。但是,元素名称必须是唯一的
也就是说,第一区是正确的。但是,块2不是。事实上-为什么不检查:)每个枚举都是系统的子类。枚举类(经过特殊处理),每个枚举元素都是一个静态字段,用文本值初始化-不能有两个同名字段,但可以有具有相同值的字段,因此#1可以工作,“2”不会。“/P>”不能包含重复的字段名,如在Switpter 2中。“我认为C是C/C++的子集。”谁在说?C?C与C++没有什么共同点(除了它们都是OO语言)或C C更接近java或对象Pascal(Delphi)。@ PeTR和java来自C,对吗?那本书也是这么说的。这本书是由Apress出版的,所以它们应该是正确的(或者我认为)。java的语法类似于C(C和C++也是如此),但我不认为它来自C。