在我的站点里,以前写过两篇关于.NET(C#)枚举的文章:
1.C#根据枚举的数值(Value)获取对应的Name值
2.C#/.NET根据枚举Name获取对应的Value值
但以上这些都只是关于枚举的一小部分内容的介绍,今天总结一个枚举在实际应用中的使用,包括获取键/值及键/值列表等,其中常用的枚举的方法有:Enum.GetName(),Enum.GetValue(),Enum.Parse()等,具体的请见下示例样式:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace EnumDemo { /// <summary> ///用枚举例举出一年的四季 /// </summary> public enum Quarter { /* * 本例中的枚举说明: * 一年有四个不同的季度,所以我们在定义枚举的时候,Name是不可以重复的,否则不能通过编译, * 但枚举的的值是我们人为规定的,所以可以重复使用,但还是建议使用不重复的数值,否则在后期使用的时候容易混淆 */ Spring = 1, Summer = 2, Autumn = 3, ////枚举的数值是可以重复的 //Autumn = 3, Winter = 4 } class Program { static void Main(string[] args) { Console.WriteLine("Enum demo start..."); EnumDemoMethod(); Console.ReadKey(); } static void EnumDemoMethod() { //直接获取枚举的数值 Console.WriteLine("------------------直接获取枚举的数值-----------------"); Console.WriteLine("Winter value:{0}", (int)Quarter.Winter); Console.WriteLine("------------------获取枚举的NAME列表-----------------"); var names = Enum.GetNames(typeof(Quarter)).ToList(); names.ForEach(x => { Console.WriteLine("Name:{0}", x); }); Console.WriteLine("------------------获取枚举的VALUE列表-----------------"); //注:这里用到了Linq的Cast<T>()方法 var values = Enum.GetValues(typeof(Quarter)).Cast<int>(); foreach (var x in values) { Console.WriteLine("Value:{0}", x); } Console.WriteLine("------------------测试根据Value获取Name的方法-----------------"); foreach (var x in values) { Console.WriteLine("Name:{0},Value:{1}", x, GetNameByValue(x)); } Console.WriteLine("------------------测试根据Name获取Value的方法-----------------"); foreach (var x in names) { Console.WriteLine("Value:{0},Name:{1}", x, GetValueByName(x)); } } static string GetNameByValue(int value) { var str = ""; try { str = Enum.GetName(typeof(Quarter), value); } catch { } return str; } static int GetValueByName(string name) { if (string.IsNullOrWhiteSpace(name)) return -1; var str = -1; try { str = (int)Enum.Parse(typeof(Quarter), name); } catch { } return str; } } }运行结果如图: 如果你觉得这篇文章对你有所帮助,那不防给我点个赞吧。^_^
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册