更好的使用.net 2.0中的枚举类型

原创 2006年05月27日 11:24:00
    使用枚举有诸多好处,比如可以使代码更容易编写、阅读和维护。本文假设您对C/C++的枚举已经有了相当的了解,同时知道.net架构和CLR初步知识,并且知道在合适的地方使用枚举,所以本文仅讨论在.net架构中枚举举有的新特性。
    从CLR开始,枚举类型就变成一个真正面向对象的类型,所有枚举类型均直接继承自System.Enum,后者继承自System.ValueType,System.ValueType最后继承自System.Object。因此,枚举类型属于值类型,但与其他只类型不同,枚举类型不能定义任何方法、属性或事件。正是因此,枚举类型可以使用继承自Object的公共方法,比如有名的ToString()。
    每个枚举在编译时,便一起会将其中每个符号变为类的一个常数字段。例如
    enum Color
    {
          Red,
          Green,
          Blue
    }
    会被编译为
    struct Color : System.Enum
    {
          public const Color Red = (Color) 0;
          public const Color Greed = (Color) 1;
          public const Color Blue = (Color) 2;
    }

    Enum类还提供一系列强大的静态方法,这里介绍几个典型的可以方便我们使用枚举类型的方法。
  
    Enum.Format,函数原型为 [ComVisibleAttribute(true)] public static string Format (Type enumType,Object value,String format) 如果调用 Enum.Format(typeof(Color), 2, "G") 将返回"Blue",Format的好处在可以制定返回的字符串格式,类似于ToString()的格式参数。有的人可能会说,直接在实例上使用ToString()方法不是更好吗,其实这句话里就暗示了Fomat()的好处,不需要枚举实例,可以直接传递枚举值得数值形式。

    Enmu.GetValues,函数原型为[ComVisibleAttribute(true)] public static Array GetValues (Type enumType)   ,返回值为枚举实例的数值数组。调用Enmu.GetValues(type(Color))将得到{0,1,2}。类似的还有Enmu.GerName(Type enumType, Object values)Enmu.GetNames(Type enumType)将返回枚举数值的字符串形式。

    Enmu.IsDefined,函数原型为[ComVisibleAttribute(true)] public static bool IsDefined(Type enumType, Object value),可以确定一个数值对于某个枚举类型是否合法,调用Enmu.IsDefined(typeof(Color), 10)将返回false,因为Color枚举中并没有定义10。

    Enmu.Parse,函数原型为[ComVisibleAttribute(true)]public static Object Parse ( Type enumType, string value, bool ignoreCase ),其中最后一个参数"bool ignoreCase“可以省略,表示是否忽略大小写。这个函数在实际使用中可以起到意想不到的好处,有很高的灵活性,可以转换字符串为枚举类型。调用Enmu.Parse(typeof(Color), "Bule", true)将得到一个Bule枚举实例。如果调用Enmu.Parse(typeof(Color), "Black", true)将会抛出ArgumentExceptiong异常,因为Black在Color中并没有定义。

枚举类型的使用

  • 2013年06月20日 13:10
  • 348KB
  • 下载

java枚举类型enum的使用

  • 2014年07月23日 13:57
  • 6KB
  • 下载

使用asp.net 2.0中的SqlBulkCopy类批量复制数据

介绍: 在软件开发中,把数据从一个地方复制到另一个地方是一个普遍的应用。 在很多不同的场合都会执行这个操作,包括旧系统到新系统的移植,从不同的数据库备份数据和收集数据。 ASP.NET 2.0有一个...

使用ASP.NET 2.0 Profile存储用户信息[翻译] Level 200

作者: Stephen Walther 原文地址:http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnvs05/...

.net 2.0使用ajax

asp.net ajax中用到了几个dll文件,这些可以从网上下载。http://ajax.asp.net站点下可以找到相关的下载。这其中包括:System.Web.Extensions.dll、Sy...

使用ASP.NET 2.0中的ReportViewer控件

[翻译]使用ASP.NET 2.0中的ReportViewer控件 原文发布日期:2007.03.22 作者:Bipin Joshi 翻译:webabcd 介绍 任何数据驱动...

使用windbg調試iis應用程序池崩溃的asp.net 2.0 bug.

使用windbg調試iis應用程序池崩溃的asp.net 2.0 bug. 新上線的asp.net 2.0 項目,不定時的報告以下錯誤: Fau...
  • jeffkxt
  • jeffkxt
  • 2015年06月24日 09:46
  • 1031

.Net 2.0 缓存使用

.Net 2.0 缓存使用(转载)  在访问量大,但更新较少的网站中使用缓存,可以大大提高运行效率;加上.NET 2.0提供的缓存依赖机制,我们可以很方便的对缓存进行管理更新;以下是本人...

Quartz.Net 2.0 bate1 使用

下载后发现在XP下无法使用 安装,编译后找到生成目录在命令行下运行下面的命令进行安装与卸载 按照:>  Quartz.Server.exe install 卸载:>  Quartz.Server...
  • e_wsq
  • e_wsq
  • 2012年02月28日 00:45
  • 445
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:更好的使用.net 2.0中的枚举类型
举报原因:
原因补充:

(最多只允许输入30个字)