Enum用法总结 - baijinshi1982的日志 - 网易博客

来源:百度文库 编辑:神马文学网 时间:2024/04/29 05:13:05

Enum用法总结

编程经验 2007-11-30 15:47:27 阅读3477 评论0   字号: 订阅

1、关于enum的定义

 

enum Fabric

{

Cotton = 1,

Silk = 2,

Wool = 4,

Rayon = 8,

Other = 128

}

 

2、符号名和常数值的互相转换

            Fabric fab = Fabric.Cotton;

            int fabNum = (int)fab;//转换为常数值。必须使用强制转换。

            Fabric fabString = (Fabric)1;//常数值转换成符号名。如果使用ToString(),则是((Fabric)1).ToString(),注意必须有括号。

            string fabType = fab.ToString();//显示符号名

            string fabVal = fab.ToString ("D");//显示常数值

3、获得所有符号名的方法(具体参见Enum类)

        public enum MyFamily

        {

            YANGZHIPING = 1,

            GUANGUIQIN = 2,

            YANGHAORAN = 4,

            LIWEI = 8,

            GUANGUIZHI = 16,

            LISIWEN = 32,

            LISIHUA = 64,

        }

            foreach (string s in Enum.GetNames(typeof(MyFamily)))

            {

                Console.WriteLine(s);

            }

4、将枚举作为位标志来处理

 

根据下面的两个例子,粗略地说,一方面,设置标志[Flags]或者[FlagsAttribute],则表明要将符号名列举出来;另一方面,可以通过强制转换,将数字转换为符号名。说不准确。看下面的例子体会吧。注意:

 

          例一:

          Fabric fab = Fabric.Cotton | Fabric.Rayon | Fabric.Silk;

           Console.WriteLine("MyFabric = {0}", fab);//输出:Fabric.Cotton | Fabric.Rayon | Fabric.Silk;

 

例二:

class FlagsAttributeDemo

{

    // Define an Enum without FlagsAttribute.

    enum SingleHue : short

    {

        Black = 0,

        Red = 1,

        Green = 2,

        Blue = 4

    };

    // Define an Enum with FlagsAttribute.

    [FlagsAttribute]

    enum MultiHue : short

    {

        Black = 0,

        Red = 1,

        Green = 2,

        Blue = 4

    };

    static void Main( )

    {

        Console.WriteLine(

            "This example of the FlagsAttribute attribute \n" +

            "generates the following output." );

        Console.WriteLine(

            "\nAll possible combinations of values of an \n" +

            "Enum without FlagsAttribute:\n" );

       

        // Display all possible combinations of values.

        for( int val = 0; val <= 8; val++ )

            Console.WriteLine( "{0,3} - {1}", val, ( (SingleHue)val ).ToString( ) );

        Console.WriteLine( "\nAll possible combinations of values of an \n" + "Enum with FlagsAttribute:\n" );

       

        // Display all possible combinations of values.

        // Also display an invalid value.

        for( int val = 0; val <= 8; val++ )

            Console.WriteLine ( "{0,3} - {1}", val, ( (MultiHue)val ).ToString( ) );

    }

}

/*

This example of the FlagsAttribute attribute

generates the following output.

All possible combinations of values of an

Enum without FlagsAttribute:

0 - Black

1 - Red

2 - Green

3 - 3

4 - Blue

5 - 5

6 - 6

7 - 7

8 - 8

All possible combinations of values of an

Enum with FlagsAttribute:

0 - Black

1 - Red

2 - Green

3 - Red, Green

4 - Blue

5 - Red, Blue

6 - Green, Blue

7 - Red, Green, Blue

8 - 8

*/

 

5、枚举作为函数参数。经常和switch结合起来使用。下面举例

        public static double GetPrice(Fabric fab)

        {

            switch (fab)

            {

                case Fabric.Cotton: return (3.55);

                case Fabric.Silk: return (5.65);

                case Fabric.Wool: return (4.05);

                case Fabric.Rayon: return (3.20);

                case Fabric.Other: return (2.50);

                default: return (0.0);

            }

        }

6、上面三点一个完整的例子

        //1、enum的定义

        public enum Fabric : short

        {

            Cotton = 1,

            Silk = 2,

            Wool = 3,

            Rayon = 8,

            Other = 128

        }

        //将枚举作为参数传递

        public static double GetPrice(Fabric fab)

        {

            switch (fab)

            {

                case Fabric.Cotton: return (3.55);

                case Fabric.Silk : return (5.65);

                case Fabric.Wool: return (4.05);

                case Fabric.Rayon: return (3.20);

                case Fabric.Other: return (2.50);

                default: return (0.0);

            }

        }

        public static void Main()

        {

            Fabric fab = Fabric.Cotton;

            int fabNum = (int)fab;

            string fabType = fab.ToString();

            string fabVal = fab.ToString ("D");

            double cost = GetPrice(fab);

            Console.WriteLine("fabNum = {0}\nfabType = {1}\nfabVal = {2}\n", fabNum, fabType, fabVal);

            Console.WriteLine("cost = {0}", cost);

        }

7、Enum类的使用

Enum.IsDefinde、Enum.Parse两种方法经常一起使用,来确定一个值或符号是否是一个枚举的成员,然后创建一个实例。Enum.GetName打印出一个成员的值;Enum.GetNames打印出所有成员的值。其中注意typeof的使用。这一点很重要。

        public enum MyFamily

        {

            YANGZHIPING = 1,

            GUANGUIQIN = 2,

            YANGHAORAN = 4,

            LIWEI = 8,

            GUANGUIZHI = 16,

            LISIWEN = 32,

            LISIHUA = 64,

        }

            string s = "YANGHAORAN";

            if (Enum.IsDefined(typeof(MyFamily), s))

            {

                MyFamily f = (MyFamily)Enum.Parse(typeof(MyFamily), s);

                GetMyFamily(f);

                Console.WriteLine("The name is:" + Enum. GetName(typeof(MyFamily), 2));

                string[] sa = Enum.GetNames(typeof(MyFamily));

                foreach (string ss in sa)

                {

                    Console.WriteLine(ss);

                }

            }

Enum用法总结 - baijinshi1982的日志 - 网易博客 addBatch()用法 - find11的日志 - 网易博客 ARBR指标的用法 - xujiyu的日志 - 网易博客 引用 ESC键用法 - 成靖的日志 - 网易博客 引用 Windows空格键用法 - 成靖的日志 - 网易博客 附子用法述略 - 自由自在的日志 - 网易博客 凯恩斯指标用法及公式 - jhdycw的日志 - 网易博客 enum用法 - - JavaEye技术网站 《商业模式的力量》总结 - 追梦人的日志 - 网易博客 太有才的生活总结 - 與狼共舞的日志 - 网易博客 一个女大学生总结的大学生活 - 乾坤狼的日志 - 网易博客 批处理精华版总结教程 - weal的日志 - 网易博客 佛医总结 - sanxian3000的日志 - 网易博客 期末教学工作总结 - 戚小帅的日志 - 网易博客 室内设计风格总结 - 华汉设计的日志 - 网易博客 学习体会 反思总结1 - larrence@126的日志 - 网易博客 的、地、得的用法区别 - piao51524271的日志 - 网易博客 博弈K线的用法 - 心林的世界的日志 - 网易博客 时间介词的用法及辨异 - 旧街的茶语的日志 - 网易博客 引用 空格键常用法你不知道的有多少? - 成靖的日志 - 网易博客 电脑键盘上所有键的用法 - 渴望美好的日志 - 网易博客 讲解大盘中长期趋势线的用法 - 天赢居的日志 - 网易博客 盐的20个新用法 - tianweimin135558的日志 - 网易博客 最全word用法 - 刘览爱我中华的精彩的日志 - 网易博客