简介

1. 枚举(enum type)通常用来表示一组常量。由于枚举是强类型的,这在编程中给我们提供了极大的方便。

2. 枚举的定义:

 public enum Sex
{
男 = 0,
女 = 1
}

或者:如果只给男赋值,那么女=1

 public enum Sex
{
男 = 0,

}

枚举在软件开发中的使用场景

在数据库设计人员表(person)时有性别字段Sex(0代表男,1代表女),我们一般用bit或者int类型表示。

1.在编程时我们给Sex字段赋值的方式为:

1).  Sex=0;

2).  Sex=(int)SexEnum.Man;

其中SexEnum为定义性别的枚举类型,我们可以看出第二种方式的可读性更强。

2.在编程时我们,如果Sex字段作为一个搜索条件的话,我们可能需要以下拉选择的方式展现所有可以选择的情况。那么我们就需要将SexEnum转换成一个字典集合然后绑定到对应的select标签,具体怎么实现请看下面的示例代码。

………………………………

enum、int、string三种类型之间的互转

执行结果如下:

获取描述信息

修改枚举如下:

获取描述信息代码如下:

打印结果如下:

枚举转换成字典集合的通用方法

1.这里我就直接列举代码如下:

 public static class EnumHelper
{
/// <summary>
/// 根据枚举的值获取枚举名称
/// </summary>
/// <typeparam name="T">枚举类型</typeparam>
/// <param name="status">枚举的值</param>
/// <returns></returns>
public static string GetEnumName<T>(this int status)
{
return Enum.GetName(typeof(T), status);
}
/// <summary>
/// 获取枚举名称集合
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static string[] GetNamesArr<T>()
{
return Enum.GetNames(typeof(T));
}
/// <summary>
/// 将枚举转换成字典集合
/// </summary>
/// <typeparam name="T">枚举类型</typeparam>
/// <returns></returns>
public static Dictionary<string, int> getEnumDic<T>()
{ Dictionary<string, int> resultList = new Dictionary<string, int>();
Type type = typeof(T);
var strList = GetNamesArr<T>().ToList();
foreach (string key in strList)
{
string val = Enum.Format(type, Enum.Parse(type, key), "d");
resultList.Add(key, int.Parse(val));
}
return resultList;
}
/// <summary>
/// 将枚举转换成字典
/// </summary>
/// <typeparam name="TEnum"></typeparam>
/// <returns></returns>
public static Dictionary<string, int> GetDic<TEnum>()
{
Dictionary<string, int> dic = new Dictionary<string, int>();
Type t = typeof(TEnum);
var arr = Enum.GetValues(t);
foreach (var item in arr)
{
dic.Add(item.ToString(), (int)item);
} return dic;
} }
  public enum Sex
{
man,
woman
}
public enum Color
{
red,
blue
}

使用方法如下:

 static void Main(string[] args)
{
var name = EnumHelper.GetEnumName<Sex>();
Console.WriteLine("数字转字符串:"+name);
var dic1 = EnumHelper.getEnumDic<Sex>();
Console.WriteLine("枚举转字典集合方法1:");
foreach (var item in dic1)
{
Console.WriteLine(item.Key + "==" + item.Value);
}
Console.WriteLine("枚举转字典集合方法2:");
var dic= EnumHelper.GetDic<Color>();
foreach (var item in dic)
{
Console.WriteLine(item.Key+"=="+item.Value);
}
Console.ReadLine();
}

 

最新文章

  1. java中equals和“==”补充
  2. 关于ILDASM.EXE的知识整理
  3. smarty模板的安装配置
  4. 如何使Session永不过期
  5. scala调用java的方法,返回了一个对象链表List&lt;Student&gt;,在scala中遍历该链表获取指定Student的名字name
  6. Volley : &quot;参数param:{ inoutNo:inoutNo ,whcode:’’}
  7. ASP.NET缓存全解析6:数据库缓存依赖 转自网络原文作者李天平
  8. cocos2dx3.2 画图方法小修改之 C++ final学习
  9. 【Xamarin挖墙脚系列:移动设备应用的开发周期及准则】
  10. winform中相对路径和绝对路径的获取
  11. jsp判断session中的值
  12. Python中BeautifulSoup中对HTML标签的提取
  13. 【京东账户】——Mysql/PHP/Ajax爬坑之用户登录
  14. jQuery使用serialize(),serializeArray()方法取得表单数据+字符串和对象类型两种表单提交的方法
  15. XML解析之SAX
  16. Nginx详解二十:Nginx深度学习篇之HTTPS的原理和作用、配置及优化
  17. CentOS7配置samba服务
  18. 【洛谷】【计数原理+Floyed】P1037 产生数
  19. 单机RedHat6.5+JDK1.8+Hadoop2.7.3+Spark2.1.1+zookeeper3.4.6+kafka2.11+flume1.6环境搭建步骤
  20. 上传文件夹+php

热门文章

  1. 代码的坏味道(9)——异曲同工的类(Alternative Classes with Different Interfaces)
  2. ASP.NET 截获服务器生成的将要发送到客户端的html的方法
  3. 成吨提高开发效率:Intellij Shortcuts精简子集与思维模式
  4. 【转】async &amp; await 的前世今生
  5. 关系数据库SQL之可编程性触发器
  6. Android 手机卫士10--应用管理器
  7. 响应式手机商城页面顶部样式HTML代码
  8. 初探React,将我们的View标签化
  9. 关于从Activity A跳转到Activity B ,其中Activity A中有一个VideoView,Activity B中有一个MediaPlayer。
  10. ASP.NET的六大内置对象