更好的使用.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
  • 下载

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

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

java枚举类型enum的使用

.Net 2.0 缓存使用

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

.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 介绍 任何数据驱动...

关于Quartz.net 2.0的使用说明

Quartz.net是什么我就不详细介绍了,估计来看这篇文章的人都知道是干什么用的。       昨天部门经理在内部即时通讯上给我发了一个消息,是一个链接地址。好奇的我就打开看了看,原来是一篇关...

在ASP.NET 2.0中使用样式、主题和皮肤

ASP.NET 2.0的主题和皮肤特性使你能够把样式和布局信息存放到一组独立的文件中,总称为主题(Theme)。接下来我们可以把这个主题应用到任何站点,用于改变该站点内的页面和控件的外观和感觉。通过改...

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

作者: Stephen Walther原文地址:http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnvs05/ht...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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