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()