C#枚举数值与名称的转换
2013-08-23 15:19
176 查看
在应用枚举的时候,时常需要将枚举和数值相互转换的情况。有时候还需要转换成相应的中文。下面介绍一种方法。
首先建立一个枚举:
获得枚举数值:
有数值获得枚举名称:
以上获得的枚举名称,是英文,如果要获得相应的中文解释,可以利用Attribute来实现,代码如下:
在枚举中,加入Description,然后建立一个类,有如下方法用来把枚举转换成对应的中文解释:
调用方法如下:
首先建立一个枚举:
/// <summary> /// 颜色 /// </summary> public enum ColorType { /// <summary> /// 红色 /// </summary> Red, /// <summary> /// 蓝色 /// </summary> Bule, /// <summary> /// 绿色 /// </summary> Green }
获得枚举数值:
int code = ColorType.Red.GetHashCode();
有数值获得枚举名称:
string name1=ColorType.Red.ToString(); //或者 string name2= Enum.Parse(typeof(ColorType), code.ToString()).ToString();
以上获得的枚举名称,是英文,如果要获得相应的中文解释,可以利用Attribute来实现,代码如下:
/// <summary> /// 颜色 /// </summary> public enum ColorType { /// <summary> /// 红色 /// </summary> [Description("红色")] Red, /// <summary> /// 蓝色 /// </summary> [Description("蓝色")] Bule, /// <summary> /// 绿色 /// </summary> [Description("绿色")] Green }
在枚举中,加入Description,然后建立一个类,有如下方法用来把枚举转换成对应的中文解释:
public static class EnumDemo { private static string GetName(System.Type t, object v) { try { return Enum.GetName(t, v); } catch { return "UNKNOWN"; } } /// <summary> /// 返回指定枚举类型的指定值的描述 /// </summary> /// <param name="t">枚举类型</param> /// <param name="v">枚举值</param> /// <returns></returns> public static string GetDescription(System.Type t, object v) { try { FieldInfo oFieldInfo = t.GetField(GetName(t, v)); DescriptionAttribute[] attributes = (DescriptionAttribute[])oFieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false); return (attributes.Length > 0) ? attributes[0].Description : GetName(t, v); } catch { return "UNKNOWN"; } } }
调用方法如下:
string name3=EnumDemo.GetDescription(typeof(ColorType), ColorType.Red)
相关文章推荐
- C#枚举数值与名称的转换
- C#枚举数值与名称的转换实例分享
- c#新手入门级代码分享 枚举类型。输出数值所对应的变量名称
- C#新手入门代码 枚举类型,输出数值,输出名称
- 枚举,名称和常数值之间的转换
- [c#]遍历枚举中的项目名称和数值
- 【C#代码】字符串类型转换成枚举类型
- C# 八进制数值字符串转换成ASCII 字符串相互转换
- C# 获取枚举的 键名称,值 和描述 遍历枚举
- C#中字符串与数值的相互转换
- C# 十六进制字符串与数值类型之间转换
- C# 数值转换相关
- c#新手入门级代码分享 输出枚举类型中所有成员的名称
- C# Enum,Int,String的互相转换 枚举转换
- C#将数值转换为千分位表示
- 在十六进制字符串与数值类型之间转换 C# 编程指南
- [C#]枚举操作(从枚举中获取Description,根据Description获取枚举,将枚举转换为ArrayList)工具类
- c# 枚举Enum和int转换(不使用强转)
- 数值与string相互转换(C#)(转)
- C#.NET对注册表的常用操作(增加项,判断指定项是否存在,增加键(键的名称,键的数值),判断指定的键是否存在)