- A+
所属分类:.NET技术
枚举
- 人为限定取值范围的整数
- 整数值的对应
- 比特位式用法
//默认从0开始:分别为0,1,2,3 enum Level{ Employee, Manager, Boss, BigBoss, } class Person{ public int ID{get;set;} public string Name {get;set;} public Level Level{get;set;} } internal class Program{ public static void Main(string[] arg){ Person person = new Person(); person.Level = Level.Employee; //结果为2 Console.WriteLine((int)Level.Boss); } }
未指定的枚举名的值将依着最后一个指定值向后依次递增(注意是最后一个指定值)
//枚举中定义的可以自定义整数值 enum Level{ Employee = 100, Manager, Boss, BigBoss, } //结果为100,101,102,103
//枚举中定义的整数值可以部分缺省 enum Level{ Employee = 100, Manager, Boss = 102, BigBoss, } //Manager自动为101,BigBoss自动为103
enum Level{ Employee=100, Manager, Boss=101, BigBoss, } //结果为100,101,101,102,有两个101也是合法的 //但不能有两个Manager,即enum中的名称不能重复。
比特位式用法
enum Skill{ Drive = 1, //二进制 0001 Cook = 2, //二进制 0010 Program = 4, //二进制 0100 Teach = 8, //二进制 1000 } Person person = new Person(); //如果有多种技能呢?可以用list,但list“太重” //采用“按位或”,得到多种技能 person.Skill = Skill.Drive | Skill.Cook | Skill.Program | Skill.Teach //二进制 1111,十进制的15 //结果为15 Console.WriteLine(person.Skill); Console.WriteLine((person.Skill & Skill.Cook)>0); //结果为True,(1111 & 0010 = 0010) Console.WriteLine((person.Skill & Skill.Cook) == Skill.Cook); //结果为True