博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#枚举数值与名称的转换
阅读量:5277 次
发布时间:2019-06-14

本文共 1651 字,大约阅读时间需要 5 分钟。

在应用枚举的时候,时常需要将枚举和数值相互转换的情况。有时候还需要转换成相应的中文。下面介绍一种方法。

首先建立一个枚举:

///  /// 颜色 ///      public enum ColorType     {
/// /// 红色 /// Red, /// /// 蓝色 /// Bule, /// /// 绿色 /// Green }

 

获得枚举数值:

int code = ColorType.Red.GetHashCode();

有数值获得枚举名称:

string name1=ColorType.Red.ToString(); //或者 string name2= Enum.Parse(typeof(ColorType), code.ToString()).ToString();

以上获得的枚举名称,是英文,如果要获得相应的中文解释,可以利用Attribute来实现,代码如下:

///  /// 颜色 ///      public enum ColorType     {
/// /// 红色 /// [Description("红色")] Red, /// /// 蓝色 /// [Description("蓝色")] Bule, /// /// 绿色 /// [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"; } } /// /// 返回指定枚举类型的指定值的描述 /// /// 枚举类型 /// 枚举值 ///
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)

name3得到的就是“红色”。

转载于:https://www.cnblogs.com/vivianlian/archive/2012/01/15/2323069.html

你可能感兴趣的文章
寻找道路(codevs 3731)题解
查看>>
Ubuntu系统安装(win7双系统)
查看>>
字典数组 区别
查看>>
vue中什么样的数据可以是在视图中显示
查看>>
es6解构赋值的高级技巧
查看>>
最小生成树
查看>>
剑指offer(19)顺时针打印矩阵
查看>>
5.28 模拟赛
查看>>
BZOJ 2049: [Sdoi2008]Cave 洞穴勘测
查看>>
【题解】Luogu P3674 小清新人渣的本愿
查看>>
AS的快捷键
查看>>
数据分页 THINKPHP3.2 分页 三种分页方法
查看>>
format的用法
查看>>
select下拉列表选中后,跳转新链接
查看>>
AEAI ESB路由转换机制说明
查看>>
Spring Aop面向切面编程&&自动注入
查看>>
软件测试第三次作业
查看>>
石头数字的总和
查看>>
漫扯:从polling到Websocket(ZZ)
查看>>
mysql 导入CSV数据 [转]
查看>>