C#编程(六)------------枚举

原文链接:http://blog.csdn.net/shanyongxu/article/details/46423255

枚举

定义枚举用到的关键字:enum

public enum TimeOfDay

        {

            Monring = 0,

            Afternoon = 1,

            Evening = 2

        }

        static void Main(string[] args)

        {

            int x=(int)TimeOfDay.Afternoon;

            Console.WriteLine(x);

            Console.ReadKey();

        }

创建枚举的优点:

1.是代码易于维护,因为确保给变量指定合法的,期望的值.

2.代码清晰,允许用描述性的名称拜师整数值,而不是含义模糊,变化多端的数来表示.

3.易于键入(通过使用.符号)

本例中TimeOfDay.Afternoon返回数字1.使用美剧一般和合适的值传递给方法,并在switch语句中迭代可能的值.

public enum TimeOfDay

        {

            Monring = 0,

            Afternoon = 1,

            Evening = 2

        }

        static void Main(string[] args)

        {           

            WriteGreeting(TimeOfDay.Afternoon);

            Console.ReadKey();

        }

        static void WriteGreeting(TimeOfDay timeOfDay)

        {

            switch (timeOfDay)

            {

                case TimeOfDay.Monring:

                    Console.WriteLine("good monring");

                    break;

                case TimeOfDay.Afternoon:

                    Console.WriteLine("cood afternoon");

                    break;

                case TimeOfDay.Evening:

                    Console.WriteLine("good evening");

                    break;

                default:

                    break;

            }

        }

在C#中枚举的真正强大之处使他们在后台会实例化为派生于基类的System.Enum的结构.这表示可以对他们调用方法,执行有用的任务.一旦代码编译好,美剧就成为了进本类型,与int和float类似.

使用前面的例子获取美剧的字符串表示.

TimeOfDay time = TimeOfDay.Afternoon;

Console.WriteLine(time.ToString());

字符串类型转换为枚举类型

TimeOfDay time2 = (TimeOfDay)Enum.Parse(typeof(TimeOfDay), "afternoon", true);

Console.WriteLine((int)time2);

从字符串类型转化为枚举类型需要用到函数Enum.Parse(),这个方法需要三个参数,第一个是要转换的枚举累心,用关键字typeof包起来,第二个是要转换的字符串(一定是枚举中有的),第三个是否忽略大小写.

注意:枚举类型的基类型是除 Char 外的任何整型,所以枚举类型的值是整型值。什么意思呢?

看下例:

enum Colors{Red,Green,Blue,Yellow}//Red=0,Green=1,Blue=2,Yellow=3,默认从0开始,如果指定red=3,则从3开始

Enum-->string

利用Tostring()方法.

Colors color=Colors.Red;

strong str = color.ToString();

string-->Enum

利用Enum的静态方法Parse()

Colors color=(Colors)Enum.Parse(typeof(Colors),”red”,blue) 

string str = color.ToString();

Console.WriteLine(str);

Console.ReadKey();

Enum-->int

直接使用强制转换

int blue=(int)Colors.Blue;

int-->Enum

调用方法

(1)可以强制转换将整型转换成枚举类型。

   例如:Colors color = (Colors)2 ,那么color即为Colors.Blue

(2)利用Enum的静态方法ToObject。

   public static Object ToObject(Type enumType,int value)

   例如:Colors color = (Colors)Enum.ToObject(typeof(Colors), 2),那么color即为Colors.Blue

应该没有谁愿意用第二种办法吧,想装13的除外.

如果要判断某个整型是否定义在枚举中的方法:Enum.IsDefined.

Enum.Isdefined(typeof(Colors),number)

原文地址:https://www.cnblogs.com/FinleyJiang/p/7602092.html