[csharp] view plain copy  
  1. <span style="font-family: Arial, Helvetica, sans-serif;">C#语言中提供了枚举和整型之间的强制转换功能,但这仅限于没有给枚举类型中各个元素指定基础类型值的</span>

情况, 如下:

enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

其中Sat的值是0, Sun是1,以此类推, 这时如果要将整型值转换为枚举类型,可以直接作显式强类型转换即可,

int i_day = 1;
Days day = (Days) i_day; // day == Days.Sun

获取枚举的描述方法如下:

定义Model

[csharp] view plain copy  
  1. /// <summary>
  2. /// 兼职工作薪资
  3. /// </summary>
  4. public enum PriceTypeEnum
  5. {
  6. /// <summary>
  7. /// 天
  8. /// </summary>
  9. [Description("元/天")]
  10. day = 1,
  11. /// <summary>
  12. /// 小时
  13. /// </summary>
  14. [Description("元/小时")]
  15. hour = 2,
  16. /// <summary>
  17. /// 周
  18. /// </summary>
  19. [Description("元/周")]
  20. week = 3,
  21. /// <summary>
  22. /// 月
  23. /// </summary>
  24. [Description("元/月")]
  25. month = 4
  26. }

通用 方法:

[csharp] view plain copy  
  1. public class EnumHelper
  2. {
  3. public static string GetDescription(Enum value)
  4. {
  5. FieldInfo fi = value.GetType().GetField(value.ToString());
  6. DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
  7. if ((attributes != null) && (attributes.Length > 0))
  8. return attributes[0].Description;
  9. else
  10. return value.ToString();
  11. }
  12. /// <summary>
  13. /// 获取枚举的描述文本
  14. /// </summary>
  15. /// <param name="e">枚举成员</param>
  16. /// <returns></returns>
  17. public static string GetEnumDescription(object e)
  18. {
  19. //获取字段信息
  20. System.Reflection.FieldInfo[] ms = e.GetType().GetFields();
  21. Type t = e.GetType();
  22. foreach (System.Reflection.FieldInfo f in ms)
  23. {
  24. //判断名称是否相等
  25. if (f.Name != e.ToString()) continue;
  26. //反射出自定义属性
  27. foreach (Attribute attr in f.GetCustomAttributes(true))
  28. {
  29. //类型转换找到一个Description,用Description作为成员名称
  30. System.ComponentModel.DescriptionAttribute dscript = attr as System.ComponentModel.DescriptionAttribute;
  31. if (dscript != null)
  32. return dscript.Description;
  33. }
  34. }
  35. //如果没有检测到合适的注释,则用默认名称
  36. return e.ToString();
  37. }
  38. /// <summary>
  39. ///  把枚举的描述和值绑定到DropDownList
  40. /// </summary>
  41. /// <param name="enumType"></param>
  42. /// <returns></returns>
  43. public static List<SelectListItem> GetSelectList(Type enumType)
  44. {
  45. List<SelectListItem> selectList = new List<SelectListItem>();
  46. foreach (object e in Enum.GetValues(enumType))
  47. {
  48. selectList.Add(new SelectListItem { Text = GetEnumDescription(e), Value = ((int)e).ToString() });
  49. }
  50. return selectList;
  51. }
  52. }

最后使用时:

[csharp] view plain copy  
  1. @Jyson.ZhanShiQuan.Common.EnumHelper.GetEnumDescription((Jyson.ZhanShiQuan.Model.Enum.PriceTypeEnum)@Model.PriceType)

界面上,可以这样使用:

@Html.DropDownListFor(model => model.Channel, Uxiaoyuan.Common.EnumHelper.GetSelectList(typeof(Uxiaoyuan.Model.Enum.Home.ChannelEnum)), "=请选择=")

C#语言中提供了枚举和整型之间的强制转换功能(SelectItem)相关推荐

  1. 我的Go+语言初体验——(6)整型有理数数据类型

    我的Go+语言初体验--(6)整型有理数数据类型 "我的Go+语言初体验" | 征文活动进行中- Go+ 语言使用后缀 'r' 表示有理数,支持整型.分数型.浮点型三种有理数数据类 ...

  2. c语言赋值小数,c语言中将一个浮点型赋值给整型时,会不会四舍五入?

    c语言中将一个浮点型赋值给整型时,不会四舍五入,会直接舍去小数部分的数据,也可以认为是执行了下取整运算. 将浮点数(单双精度)转换为整数时,将舍弃浮点数的小数部分,只保留整数部分.将整型值赋给浮点型变 ...

  3. 本题要求编写程序,对输入的一个整数,从高位开始逐位分割并输出它的各位数字。输入格式:输入在一行中给出一个长整型范围内的非负整数。输出格式:从高位开始逐位输出该整数的各位数字,每个数字后面有一个空格

    本题要求编写程序,对输入的一个整数,从高位开始逐位分割并输出它的各位数字.输入格式:输入在一行中给出一个长整型范围内的非负整数.输出格式:从高位开始逐位输出该整数的各位数字,每个数字后面有一个空格 1 ...

  4. 网络上连接的计算机必须要安装,[单选] Windows XP中提供了三种组件,实现不同的网络功能。如果计算机需要连接到Internet,必须安装()。...

    [单选] Windows XP中提供了三种组件,实现不同的网络功能.如果计算机需要连接到Internet,必须安装(). 更多相关问题 [单选] 乙炔与空气或氧气混合达到自燃温度在()下也能爆炸 [单 ...

  5. 为什么枚举与整型不能互相转换?

    语法上它们可以互相转换,但在域的范围内并不能等同. 枚举语法糖果 带类型的整型: 域的范围比整型小. 为什么枚举能转换整型? 枚举是整型子集,意味着枚举可以被整型一一对应,这就是为什么枚举能转换整型的 ...

  6. C语言基本数据类型笔记整理(整型、实型/浮点型、字符型、枚举型、构造类型、指针类型、空类型)

    C语言基本数据类型 一.整型 ①有符号整型 ②无符号整型 二.实型 三.字符型 四.枚举型 五.构造类型 ①数组 ②结构体 ③共用体 六.指针类型 七.空类型 一.整型 ①有符号整型 有符号整型 关键 ...

  7. C语言中 枚举变量与枚举值,枚举类型变量再赋值问题

    1.枚举定义及其使用 1.1 定义 枚举是一种特殊的整型,关键词为enum,将变量的值一一列举出来,变量的值只限于列举出来的值的范围内 1.2 使用 枚举的定义使用 enum msgtype { eo ...

  8. 浮点型数据2字节_C语言进阶之路:数据类型 - 整型、字符型和浮点型的扩展!...

    整型 int 可添加 short 和 long: short int: 简为 short; long int: 简为 long; long long int: 简为 long long 它们都可以再添 ...

  9. C语言中无符号数和有符号数之间的比较和运算

    学C语言的同学看看以下代码运行结果会多少 源代码 #include <stdio.h> void main(void) {unsigned char uchar_num = 1;char ...

最新文章

  1. ExtJs学习笔记(3)_GridPanel[XML做数据源]
  2. 软考-信息系统项目管理师-信息系统安全管理
  3. CRM_ORGMAN_CHECK_OW
  4. (转)SystemProcessesAndThreadsInformation
  5. IE下var丢失造成的错误
  6. 前端学习(1258):then参数中的函数返回值
  7. 域环境下文件服务器,域和文件服务器
  8. mysql数据库序列作用_MySQL 序列使用
  9. 放肆的使用UIBezierPath和CAShapeLayer画各种图形
  10. .net Core使用RabbitMQ
  11. PDF加密、解密内幕(三) -破解加密PDF文件
  12. 屏蔽 NVIDIA 显卡
  13. win10卸载ie11后安装不上
  14. 10家不错的iphone编程资源站
  15. ovftool导出虚拟机报错处理过程!
  16. 在WIN10下通过网口给华为海思Hi3516DV300刷机(鸿蒙系统)
  17. Java.Canvas
  18. 安全多方计算与证券业数据生态
  19. 为什么要标准化用户故事格式?
  20. 舞台音效控制软件_苹果舞台现场演奏音效控制工具 MainStage 3 v3.3.1

热门文章

  1. 网吧游戏服务器虚拟,网吧的16G内存虚拟服务器组建之路
  2. 基于澳大利亚气象数据集可视化分析及降雨预测
  3. 继浙大之后波士顿又发机器人视频了!
  4. 波动率期限结构与日历价差策略
  5. 纽扣虽小,搭配却至关重要——Pin Assignment
  6. zookeeper入门 - 3 - API常用函数功能与参数详解
  7. 机器学习(Machine Learning)——深度学习(Deep Learning)
  8. Alpha Test是什么,为什么移动端需要避免使用Alpha Test?
  9. 半导体激光器相关英文缩写词(一)
  10. 数据库管理员 - 面试手册