认为限定取值范围
枚举是类,和类同级
枚举类型的本质是整数,默认从0开始,0,1,2,3……..
可以手动赋值。
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
TestE stu = new TestE();
stu.Level = Level.A;
stu.Season = Season.Autumn;
//如果同时拥有多个技能呢
//按位取或,把这些枚举值的二进制合起来,第n位有1则1,无1则0
//
stu.Skill = Skill.Cook | Skill.Drive | Skill.Program | Skill.Teach;
Console.WriteLine(stu.Skill);//11
//对比stu.Skill的二进制,和Skill.Teach的二进制值,同时为1则1,否者为0,返回并集
//如果这个并集等于Teach本身,可能说明stu.Skill包含Skill.Teach
//比如Drive和Cook二进制的第一位都是1,并不能说明Drive包含Cook,
//所以在设置枚举值的时候,二进制的1.要错开,不要重复,1,2,4,8.....
Console.WriteLine((stu.Skill&Skill.Teach)>0);
}
}
enum Level
{
A,//0
B,//1
C,//2
D //3
}
//Spring赋值为100,下一个枚举没有显式赋值,就根据上一个枚举值+1
enum Season
{
Spring=100,//100
Summer,//101
Autumn =300,//300
Winter //301
}
enum Skill
{
Drive = 3, //二进制 00000011
Cook = 1, //二进制 00000001
Program =10,//二进制 00001010
Teach = 8 //二进制 00001000
//按位取或:00001011 转换成10进制 11
}
class TestE
{
public Level Level { get; set; }
public Season Season { get; set; }
public Skill Skill { get; set; }
}
}