当前位置:编程学习 > C#/ASP.NET >>

C#中Enum枚举类型的简单使用

枚举类型的介绍:

枚举类型是由一组特定常量构成的一组数据结构,是值类型的一种特殊形式,当需要一个由指定常量集合组成的数据类型时,使用枚举类型。枚举声明可以显式地声明 byte、sbyte、short、ushort、int、uint、long 或 ulong 类型作为对应的基础类型。没有显式地声明基础类型的枚举声明意味着所对应的基础类型是 int。

 

注意点:

1 对于没有赋值的枚举类型,声明的第一个枚举成员它的默值为零。以后的枚举成员值是将前一个枚举成员(按照文本顺序)的值加1得到的。

2 允许多个枚举成员有相同的值。没有显示赋值的枚举成员的值,总是前一个枚举成员的值+1。

3 使用时注意类型转换。

可以看出枚举类型的本质都是数字类型。在显示的时候如果需要将枚举的值映射成其相对应的字符串,下边是一个简单的解决方法。

 

[csharp] public enum DataTypeId 
    { 
        [StringValue("Money")] 
        Money = 0, 
        [StringValue("Number")] 
        Number = 1, 
        [StringValue("Datetime")] 
        Datetime = 2, 
        [StringValue("LongText")] 
        LongText = 3, 
        [StringValue("ShortText")] 
        ShortText = 4, 
        [StringValue("IdeaType")] 
        IdeaType = 5, 
        [StringValue("Status")] 
        Status = 6 
    } 
 
    public class StringValue : System.Attribute 
    { 
        private string _value; 
 
        public StringValue(string value) 
        { 
            _value = value; 
        } 
 
        public string Value 
        { 
            get { return _value; } 
        } 
 
    } 
 
    public static class StringEnum 
    { 
        public static string GetStringValue(Enum value) 
        { 
            string output = null; 
            Type type = value.GetType(); 
 
            FieldInfo fi = type.GetField(value.ToString()); 
            StringValue[] attrs = 
               fi.GetCustomAttributes(typeof(StringValue), 
                                       false) as StringValue[]; 
            if (attrs.Length > 0) 
            { 
                output = attrs[0].Value; 
            } 
 
            return output; 
        } 
    } 

public enum DataTypeId
    {
        [StringValue("Money")]
        Money = 0,
        [StringValue("Number")]
        Number = 1,
        [StringValue("Datetime")]
        Datetime = 2,
        [StringValue("LongText")]
        LongText = 3,
        [StringValue("ShortText")]
        ShortText = 4,
        [StringValue("IdeaType")]
        IdeaType = 5,
        [StringValue("Status")]
        Status = 6
    }

    public class StringValue : System.Attribute
    {
        private string _value;

        public StringValue(string value)
        {
            _value = value;
        }

        public string Value
        {
            get { return _value; }
        }

    }

    public static class StringEnum
    {
        public static string GetStringValue(Enum value)
        {
            string output = null;
            Type type = value.GetType();

            FieldInfo fi = type.GetField(value.ToString());
            StringValue[] attrs =
               fi.GetCustomAttributes(typeof(StringValue),
                                       false) as StringValue[];
            if (attrs.Length > 0)
            {
                output = attrs[0].Value;
            }

            return output;
        }
    }


在使用的时候,只需要调用相应

补充:软件开发 , C# ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,