枚举
- 人为限定取值范围的整数
- 整数值的对应
- 比特位式用法
//默认从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
出处:https://www.cnblogs.com/DylanCecil/p/14858141.html