zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    智能实验室-杀马(Defendio) 4.12.0.800
    智能实验室-结构化存储浏览器(SSExplorer) 1.7.0.170
    智能实验室-全能优化(Guardio) 4.94.0.830
    智能实验室-全能优化(Guardio) 4.9.0.790
    IT餐馆—第二十二回 控件
    当DiscuzNT遇上了Loadrunner(中)
    在Discuz!NT中进行缓存分层(本地缓存+memcached)
    介绍三个Silverlight 在线编辑器控件
    玩玩负载均衡在window与linux下配置nginx
    IT餐馆—第十八回 祭奠
  • 原文地址:https://www.cnblogs.com/FinleyJiang/p/7602092.html
Copyright © 2011-2022 走看看