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

枚举

  • 人为限定取值范围的整数
  • 整数值的对应
  • 比特位式用法
//默认从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
posted @ 2021-06-07 11:24  三只小松鼠  阅读(125)  评论(0编辑  收藏  举报