C#枚举数值与名称的转换
在应用枚举的时候,时常需要将枚举和数值相互转换的情况。有时候还需要转换成相应的中文。下面介绍一种方法。
首先建立一个枚举:
/// <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 > ) ? attributes[].Description : GetName(t, v);
}
catch
{
return "UNKNOWN";
}
}
}
调用方法如下:
string name3=EnumDemo.GetDescription(typeof(ColorType), ColorType.Red)
C#枚举数值与名称的转换的更多相关文章
- C#枚举数值与名称的转换实例分享
首先建立一个枚举: 复制代码代码如下: /// <summary> /// 颜色 /// </summary> public enum ColorType ...
- 从一个int值显示相应枚举类型的名称或者描述
我正在做一个出入库管理的简单项目,在Models里定义了这样的枚举类型 public enum InOrOut { [Description("出库")] Out = , [Des ...
- C# 数值的隐式转换
Debug2.Log(5/8.0f, 5.0f/8, 5/8);//output:0.625, 0.625, 0 隐式数值转换表
- c# 根据枚举Value 获得名称
// 定义枚举类型enum sotype : int { book=1, pen=2, other=3 } // 输出名称 switch (Enum.GetName(typeof(sotype), 1 ...
- 枚举:Enum-Int-String之间的转换与扩展
示例枚举: public enum Color { [Description("红色")] Red, [Description("绿色")] Green = 7 ...
- springMVC源码分析--RequestToViewNameTranslator请求到视图名称的转换
RequestToViewNameTranslator可以在处理器返回的View为空时使用它根据Request获取viewName.RequestToViewNameTranslator提供的实现类只 ...
- 数据传递--------博客-----------springMVC源码分析--RequestToViewNameTranslator请求到视图名称的转换
参考来源:http://blog.csdn.net/qq924862077/article/details/54286976?utm_source=gold_browser_extension Req ...
- python 数值系列-进制转换
进制转换 前语: 如果您不通二进制,八进制,十六进制,请移步:http://www.360doc.com/content/17/0211/21/40101294_628326994.shtml 问题 ...
- java数值类型之间的转换
说明:图中6个实心箭头代表转换无信息丢失,3个虚线箭头表示可能有精度损失的转换.
随机推荐
- Codeforces Round #207 (Div. 1)B(数学)
数学so奇妙.. 这题肯定会有一个循环节 就是最小公倍数 对于公倍数内的相同的数的判断 就要借助最大公约数了 想想可以想明白 #include <iostream> #include< ...
- add-two-numbers-ii
注意:有一种好的方法,是将链表倒转,然后依次相加. 但是,按照题目要求,用了不改变原链表的方法. 就是将两个链表增加到相同长度,然后递归相加,子函数返回后处理进位. https://leetcode. ...
- freemarker判断记录集是不是为空
#if($personals)这样写 直接把记录标识符放在if里面就可以了
- css配合js模拟的select下拉框
css配合js模拟的select下拉框 <!doctype html> <html> <head> <meta charset="utf-8&quo ...
- 如何解决:新建Android程序的时候发生了找不到 \android-sdk-windows\tools\lib\proguard.cfg文件 的错误
问题概述: 在新建Android程序的时候出现以下错误: 找不到 \android-sdk-windows\tools\lib\proguard.cfg文件 原因: SDK不完整. 解决方法: 方法一 ...
- 浏览器检测是否安装flash插件,若没有安装,则弹出安装提示
说白了其实就是在html中前途flash的使用代码 <!-- html嵌入flash,检测浏览器是否安装flash插件,并提示安装.--> <object type=&q ...
- Android如何调用第三方SO库
问题描述:Android如何调用第三方SO库:已知条件:SO库为Android版本连接库(*.so文件),并提供了详细的接口说明:已了解解决方案:1.将SO文件直接放到libs/armeabi下,然后 ...
- request的用法
Request从几个集合取数据是有顺序的,从前到后的顺序依次是 QueryString,Form,最后是ServerVariables.Request对象按照这样的顺序依次搜索这几个集合中的变量,如果 ...
- 移动设备3G网站制作的detail
说明一下,在此所说的移动设备前端开发是指针对高端智能手机(如Iphone.Android),所以需要对webkit内核的浏览器有一定的了解. 1.webkit内核中的一些私有的meta标签 <m ...
- wpa_cli调试工具的使用
1: run wpa_supplicant first use the following command: wpa_supplicant -Dwext -iwlan0 -C/data/system/ ...