认为限定取值范围

    枚举是类,和类同级

    枚举类型的本质是整数,默认从0开始,0,1,2,3……..
    可以手动赋值。

    1. namespace ConsoleApp2
    2. {
    3. class Program
    4. {
    5. static void Main(string[] args)
    6. {
    7. TestE stu = new TestE();
    8. stu.Level = Level.A;
    9. stu.Season = Season.Autumn;
    10. //如果同时拥有多个技能呢
    11. //按位取或,把这些枚举值的二进制合起来,第n位有1则1,无1则0
    12. //
    13. stu.Skill = Skill.Cook | Skill.Drive | Skill.Program | Skill.Teach;
    14. Console.WriteLine(stu.Skill);//11
    15. //对比stu.Skill的二进制,和Skill.Teach的二进制值,同时为1则1,否者为0,返回并集
    16. //如果这个并集等于Teach本身,可能说明stu.Skill包含Skill.Teach
    17. //比如Drive和Cook二进制的第一位都是1,并不能说明Drive包含Cook,
    18. //所以在设置枚举值的时候,二进制的1.要错开,不要重复,1,2,4,8.....
    19. Console.WriteLine((stu.Skill&Skill.Teach)>0);
    20. }
    21. }
    22. enum Level
    23. {
    24. A,//0
    25. B,//1
    26. C,//2
    27. D //3
    28. }
    29. //Spring赋值为100,下一个枚举没有显式赋值,就根据上一个枚举值+1
    30. enum Season
    31. {
    32. Spring=100,//100
    33. Summer,//101
    34. Autumn =300,//300
    35. Winter //301
    36. }
    37. enum Skill
    38. {
    39. Drive = 3, //二进制 00000011
    40. Cook = 1, //二进制 00000001
    41. Program =10,//二进制 00001010
    42. Teach = 8 //二进制 00001000
    43. //按位取或:00001011 转换成10进制 11
    44. }
    45. class TestE
    46. {
    47. public Level Level { get; set; }
    48. public Season Season { get; set; }
    49. public Skill Skill { get; set; }
    50. }
    51. }