在我的站点里,以前写过两篇关于.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;
}
}
}
运行结果如图:
如果你觉得这篇文章对你有所帮助,那不防给我点个赞吧。^_^
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册