enum 列舉一般用法 dotnet
public enum Demo { [Description("Moning描述")] Moning = 0, [Description("Afternoon描述")] Afternoon = 1, [Description("Evening描述")] Evening = 2, }
列舉方法
1、獲取列舉字串
Demo time = Demo.Afternoon;
Console.WriteLine(time.ToString());//輸出:Afternoon
2、Enum.Parse()方法。這個方法帶3個引數,第一個引數是要使用的列舉型別。其語法是關鍵字typeof後跟放在括號中的列舉類名。typeof運算子將在第5章詳細論述。第二個引數是要轉換的字串,第三個引數是一個bool,指定在進行轉換時是否忽略大小寫。最後,注意Enum.Parse()方法實際上返回一個物件引用——我們需要把這個字串顯式轉換為需要的列舉型別(這是一個取消裝箱操作的例子)。對於上面的程式碼,將返回1,作為一個物件,對應於Demo.Afternoon的列舉值。在顯式轉換為int時,會再次生成1。
Demo time2 = (Demo) Enum.Parse(typeof(Demo), “afternoon”, true);
Console.WriteLine((int)time2);//輸出1
Demo time3 = Enum.Parse<Demo>("1");
Console.WriteLine((int)time3.Afternoon );//輸出1
3、得到列舉的某一值對應的名稱
var Text = Enum.GetName(typeof(Demo), 0);
var Text = ((Demo)0).ToString();//返回:Morning
兩種方法都能實現,但是當其值越界(不是列舉所列出的值),就有一定的區別了。大家可以根據自己的需求不同,選擇合適的方法。
var Text = ((Demo)5).ToString(); //返回:5,如果越界返回原值
this.lbGetName.Text = Enum.GetName(typeof(Demo), 5); //返回:空字串,如果越界返回空字串
4、得到列舉的所有的值
foreach (int i in Enum.GetValues(typeof(Demo)))
Text += i.ToString();
5、列舉所有的名稱
foreach(string temp in Enum.GetNames(typeof(Demo)))
Text+=temp;
6、列舉的Description值
public static class EnumExtensions { public static string GetDescription(this Enum value) { return value.GetType() .GetMember(value.ToString()) .FirstOrDefault()? .GetCustomAttribute<DescriptionAttribute>()? .Description; } }
var Text=Demo.Afternoon.GetDescription()