C#中enum类型

最近碰到了枚举类型,就顺便整理下。

枚举的基类Enum,可以是除 Char 外的任何整型。不做显示声明的话,默认是整形(Int32)。

声明一个Enum类型

        /// <summary>
        /// 颜色
        /// </summary>
        public enum People
        {
            [Description("婴儿")]
            Baby = 0,

            [Description("儿童")]
            Children = 5,

            [Description("青年")]
            Youth = 20,

            [Description("老人")]
            Old = 60

        }

Enum转化为String类型:

(1)利用Object.ToString()方法:

People.Baby.ToString();

(2)利用Enum的静态方法GetName:

Enum.GetName(typeof(People), 0)
Enum.GetName(typeof(People), People.Baby)

String类型转化为Enum:

(1)利用Enum的静态方法Parse:

(People)Enum.Parse(typeof(People), "Children")

Enum转化为整数:

(1)强制转化化

(int)People.Youth;
(byte)People.Youth;//byte的数值范围,0-255,小心有些会溢出

int转化为Enum

(People)(60)
(People)Enum.ToObject(typeof(People), 60)

获取Enum字符串数组

foreach (var item in Enum.GetNames(typeof(People)))
{
    Console.WriteLine(item);
}

判断某个整形是否定义在Enum中

Enum.IsDefined(typeof(People), 60);//返回true或false

结果为:

343434353

 

获取枚举类型头上的Description值:

class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(GetDes(People.Youth));
            Console.ReadKey();
        }
        public static string GetDes(Enum value)
        {
            return ((DescriptionAttribute)Attribute.GetCustomAttribute(value.GetType().GetField(value.ToString()), typeof(DescriptionAttribute))).Description;
        }
        public enum People
        {
            [Description("婴儿")]
            Baby = 0,

            [Description("儿童")]
            Children = 5,

            [Description("青年")]
            Youth = 20,

            [Description("老人")]
            Old = 60

        }
    }

结果:

posted @ 2015-08-14 00:33  Eric-Lee  阅读(2596)  评论(0编辑  收藏  举报