枚举类型

来源:互联网 发布:淘宝上卖刀具犯法吗 编辑:程序博客网 时间:2024/05/20 08:23

                1)它允许使用描述性的名称表示整数值。
                2)枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符。枚举本身的修饰符仅能使用public和internal。
                3)枚举是值类型。
                4)枚举都是隐式密封的,不允许作为基类派生子类。
                5)枚举类型的成员均为静态。
                6)每个枚举成员均具有相关联的常数值。
                7)枚举成员不能相同,但枚举的值可以相同。
                8)枚举最后一个成员的逗号和大括号后面的分号可以省略。

class Program
    {
        static void Main(string[] args)
        {
           


            Console.WriteLine(week.Monday);
            Console.WriteLine((int)week.Monday);
            Console.WriteLine((int)week.Tuesday);
            Console.WriteLine((int)week.Wednesday);
            Console.WriteLine((int)week.Thursday);
            Console.WriteLine((int)week.Sunday);


            Console.WriteLine(Enum.GetName(typeof(Man), 1));//得到2值对应的枚举成员
            string[] array1 = Enum.GetNames(typeof(Man));//将枚举类型的成员传入 字符串数组
            Console.WriteLine(array1[1]);
            Array array2 = Enum.GetValues(typeof(Man));
            Console.WriteLine(array2.GetValue(1));


            Console.WriteLine("------Enume.GetValues获得枚举项的数组(基类)-----");
            Array ary = Enum.GetValues(typeof(Color));  //array是数组的基类, 无法实例化
            foreach (int i in ary)  //列出枚举项对应的数字
            {
                Console.WriteLine(i.ToString());
            }
            Console.WriteLine("------------------------------------------------");
            foreach (Color c in ary)    //列出枚举项的枚举值
            {
                Console.WriteLine(c.ToString());
            }


            Console.WriteLine("------ary.GetValue获得枚举项-----");
            //Enumes.GetValues和ary.GetValue获得枚举项
            for (int i = 0; i < ary.Length; i++)
            {
                Console.WriteLine(ary.GetValue(i).ToString());  //可以通过(Color)ary.GetValue(i)获得枚举项的值
            }
            Console.WriteLine("------Enume.GetName获得枚举项的字符串数组-----");
            //Enume.GetNames和Enum.Parse获得枚举项
            string[] strary = Enum.GetNames(typeof(Color));
            foreach (string s in strary)
            {
                Console.WriteLine(s);
            }
            Console.WriteLine("------Enum.Parse获得枚举项-----");
            for (int i = 0; i < strary.Length; i++)
            {
                Console.WriteLine(Enum.Parse(typeof(Color), strary[i]).ToString());
            }


            Console.ReadKey();
        }
        enum sex : byte //显示指定枚举的底层数据类型
        {
            male,
            female,  //此处逗号可以省略
        };           //此处分号可以省略
        enum week
        { 
            Monday, //此处不赋值即从0开始
            Tuesday,
            Wednesday = 3,
            Thursday,//此处不赋值将顺延上一个值 值为4


            Sunday = 0,
            Everyday = 1 //成员的值可以设置成一样的,但是成员不成
        }


        enum Man
        { 
            刘备 = 1,
            关羽 = 2,
            张飞 = 3
        }


        public enum Color
        {
            red = 0, orange = 1, yellow = 2, green = 4, blue = 5, cyan = 6, purple = 7
        }

 

        标志枚举要在顶部加[System.Flags]特性进行声明。而且枚举支持组合运算。


class Program   

{       

        static void Main(string[] args)

       

                var man = Week.白 | Week.美; //赋值为101    计算方法001或上100,结果是101

                Console.WriteLine((int)man);           

                if ((man & Week.白) == Week.白)      //101 man

                 {                                   //001 白 逐位相与,

                     Console.WriteLine("此人白");     //001 如果结果是白,就可以反推出man包含 白

                  }  else  

                  {               

                      Console.WriteLine("此人黑"); 

                  }  

         

                 Console.ReadKey();

              }

    }

[System.Flags]

    publicenum Week   

{         白 = 1//001

          富 = 2//010

          美 = 4//100

    }   

}

0 0
原创粉丝点击