C#基础_学习笔记–枚举

  • 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