当前位置:  编程技术>.net/c#/asp.net

有关 C# 枚举的几个例子

    来源: 互联网  发布时间:2014-08-30

    本文导语:  命名空间: using System.Runtime.Serialization; using System.Reflection; 1.定义枚举     代码如下: /// /// 银行简码 /// [DataContract] public enum BankCode {    [EnumMember]    [Description("中行")]    boc = 95559,    [EnumMember]    [Description("...

命名空间:
using System.Runtime.Serialization;
using System.Reflection;

1.定义枚举  
 

代码如下:

///
/// 银行简码
///
[DataContract]
public enum BankCode
{
   [EnumMember]
   [Description("中行")]
   boc = 95559,

   [EnumMember]
   [Description("工行")]
   icbc = 95588,

   [EnumMember]
   [Description("交行")]
   comm = 95566
}

2.将枚举转换为DataTable,并读取枚举的描述(Description)值
 

代码如下:

///
/// 将枚举转换为DataTable
///
///
///
public static DataTable ConvertEnumToDataTable(Type source)
{
   DataTable dt = new DataTable();
   dt.Columns.Add("name");
   dt.Columns.Add("value");
   dt.Columns.Add("Desc");
foreach (string name in Enum.GetNames(source))
{
   object enumValue = Enum.Parse(source, name);
   DataRow dr = dt.Rows.Add();
   dr[0] = name;
   dr[1] = (int)enumValue;
   dr[2] = GetEnumDesc(source, name);
}
return dt;
}

///
/// 读取枚举的Description
///
/// 枚举Type
/// 需要读取
///
public static string GetEnumDesc(Type source,string enumName)
{
  FieldInfo[] fieldinfo = source.GetFields();
  foreach (FieldInfo item in fieldinfo)
  {
     if (item.Name != enumName) continue;
     Object[] obj = item.GetCustomAttributes(typeof (DescriptionAttribute), false);
     if (obj.Length == 0) continue;
     DescriptionAttribute desc = (DescriptionAttribute) obj[0];
     return desc.Description;
}
    return enumName;
}

调用示例:DataTable dt = ConvertEnumToDataTable(typeof (BankCode));

3.根据枚举读取枚举值
方法A
 

代码如下:
public void GetBankValue(BankCode bankCode)
{
int result = 0;
switch (bankCode)
{
case BankCode.boc:
{
result = (int)BankCode.boc;
break;
}
case BankCode.comm:
{
result = (int)BankCode.comm;
break;
}
case BankCode.icbc:
{
result = (int)BankCode.icbc;
break;
}
}
return result;
}

方法B
 

代码如下:
public static int GetBankValue(string bankCode)
{
foreach (var item in Enum.GetNames(typeof(BankCode)))
{
if (item == bankCode)
{
return (int) Enum.Parse(typeof (BankCode), item);
}
}
return 0;
}

备注:
A,B两种方法
其中A方法的略处在于当枚举如增加时,需要更改方法。
另B方法,则无需更改。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 谁有有关usb相关编程的例子或资料?
  • 在编译有关socket的例子时老有这些错误,是什么一回事
  • 有关SQL条件判断语句的二个例子
  • 有关mysql中ROW_COUNT()的小例子
  • php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
  • 看了有关EJB的资料,可还是弄不清其中的奥妙。能不能给讲一下,在实际例子中是个怎么样的概念?
  • sql server有关时间的记录查询的例子
  • ​有关Docker的八个令人难以置信的事实
  • 有关内码转换(跟HttpServletRequest有关)
  • 求有关png图像处理的libpng库的有关中文资料
  • 大家推荐一下有关LINUX7有关的网络编程的书。最好是比较全面的!比较经典的。
  • 求教有关smartupload的问题,有关就给分!!
  • 有关KDevelop-3.0.4-0.1.i386.rpm的有关软件包
  • 有关在sco unix5.0.4下有关网卡设置的问题(非常急,高分相送)
  • 有关snmp的一个很菜,但是困扰了我很久的问题,有关工作原理的,望大家赐教
  • 有关KDevelop编程的资料
  • 有关集群与数据同步
  • 请教有关英文简历方面的词句!
  • 有关报表打印(在JAVA,WEB下应用)急用!
  • 请各位大哥告知JAVA中消息机制的有关资料,拜托!
  • 有关cocoon的问题??
  • 有关jbuilder
  • 我想看看有关Linux和Unix的源码,有什么好的建议
  • 有关J2ME的帮助文档!
  • 100分求助 能不能提供一些有关图像分割的算法和实现代码!谢谢
  • 在哪里可以弄到有关tomcat配置方面的资料?
  • Helper! 有关Jbuilder使用问题???
  • 有关swing的问题,请高手回答


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3