zoukankan      html  css  js  c++  java
  • 枚举 互斥 和标签

    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]的枚举,如人的性别,非男即女

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

     
     
  • 相关阅读:
    差分约束系统详解
    AC自动机详解
    KMP算法详解
    ST算法详解
    Trie详解
    欧拉路径详解
    树上差分详解
    LCA详解
    树链剖分详解
    树的直径详解
  • 原文地址:https://www.cnblogs.com/nanxiaoxiang/p/6490083.html
Copyright © 2011-2022 走看看