枚举 互斥 和标签

1   public class Student
2     {
3         public Student()
4         { }
5         public int Age { get; set; }
6         public string Name { get; set; }
7         //性格
8         public States Xingge { get; set; }
9     }

Student类

下面是枚举

    public enum States
    {
        可爱,
        活泼,
        勤奋,
        认真

    }

主程序

    static void Main()
        {
            Student stu = new Student();
            stu.Name = "小明";
            stu.Age = 12;
            stu.Xingge = States.活泼;
            Console.WriteLine(stu.Xingge);//打印"活泼"
            stu.Xingge = States.活泼 | States.可爱;
//打印"活泼"  这里 打印的结果和States.活泼 | States.可爱;的顺序无关
//这和枚举中他们的顺序相关,谁在下面打印谁,即谁的值大,打印谁
        Console.WriteLine(stu.Xingge);
    Console.Read(); }

22标志枚举

  [Flags]//表示是标志枚举
    public enum States
    {
        可爱,
        活泼,
        勤奋,
        认真
    }

当修改States后,

  stu.Xingge = States.活泼 | States.可爱;
 Console.WriteLine(stu.Xingge);//打印还是活泼(因为活泼 默认值大)
还是没有满足我们打印多个性格 的愿望
因为我们不光要给States枚举增加[Flags]标签,还要给他们一一赋值
 [Flags]
    public enum States
    {
        可爱=1,//0001
        活泼=2,//0010
        勤奋=4,//0100
        认真=8
    }

  stu.Xingge = States.可爱|States.活泼|States.认真;
            Console.WriteLine(stu.Xingge);//打印"可爱,活泼,认真" 

使用情况,当是互斥的情况下 用没有标签[Flags]的枚举,如人的性别,非男即女

当不是互斥的时候,如 一个文件的权限,可修改,可删除等 就用标签枚举

 
 
原文地址:https://www.cnblogs.com/nanxiaoxiang/p/6490083.html