C#中Enum列舉型別的簡單使用
阿新 • • 發佈:2019-01-28
列舉型別的介紹:
列舉型別是由一組特定常量構成的一組資料結構,是值型別的一種特殊形式,當需要一個由指定常量集合組成的資料型別時,使用列舉型別。列舉宣告可以顯式地宣告 byte、sbyte、short、ushort、int、uint、long 或 ulong 型別作為對應的基礎型別。沒有顯式地宣告基礎型別的列舉宣告意味著所對應的基礎型別是 int。
注意點:
1 對於沒有賦值的列舉型別,宣告的第一個列舉成員它的默值為零。以後的列舉成員值是將前一個列舉成員(按照文字順序)的值加1得到的。
2 允許多個列舉成員有相同的值。沒有顯示賦值的列舉成員的值,總是前一個列舉成員的值+1。
3 使用時注意型別轉換。
可以看出列舉型別的本質都是數字型別。在顯示的時候如果需要將列舉的值對映成其相對應的字串,下邊是一個簡單的解決方法。
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這個字串。