程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中Enum枚舉類型的簡單使用

C#中Enum枚舉類型的簡單使用

編輯:C#入門知識

枚舉類型的介紹:

枚舉類型是由一組特定常量構成的一組數據結構,是值類型的一種特殊形式,當需要一個由指定常量集合組成的數據類型時,使用枚舉類型。枚舉聲明可以顯式地聲明 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;
        }
    }


在使用的時候,只需要調用相應的方法就可以了 StringEnum.GetStringValue(DataTypeID.Money) 輸出的字符串即為該MyDataTypeId枚舉值對應的字符串

 


還有一種簡單的方法能夠得到枚舉值對應的字符串,DataTypeID.Money.ToString()返回的就是Money字符串。在Web頁面顯示的時,DataTypeID.Money顯示的是0,而DataTypeID.Money。ToString()返回的是Money這個字符串。


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved