第六章 c# 枚举基础.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c# 枚举基础 与 枚举属性的访问 枚举提供成组的常数值,它们有助于使成员成为强类型以及提高代码的可读性。在 C#?中,使用 enum 来声明枚举。 ? 枚举分为简单枚举和标志枚举两种。 基本语法示例 enum Day { Sun, Mon, Tue, Wed, Thu, Fri, Sat }; 以下格式也可以: enum Day { ??? Sun, ??? Mon, ??? Tue, ??? Wed, ??? Thu, ??? Fri, ??? Sat }; 枚举类型 枚举类型可以是:byte、sbyte、short、ushort、int、uint、long、ulong,如果没有指定类型,则默认为 int 类型。指定类型示例: enum Day : byte { Sun, Mon, Tue, Wed, Thu, Fri, Sat }; 枚举数的值 默认情况下,第一个枚举数的值为 0,后面每个枚举数的值在前一个枚举数的值基础上递增 1。当然,也可以自行指定,例如: enum Day { Sun = 1, Mon, Tue, Wed, Thu, Fri, Sat }; enum Range { MIN = 0, MAX = 255 }; enum Range2 { MIN, M1 = 50, M2, MAX = 255 }; //MIN?为 0,M2?为 51 枚举数大小写敏感 比如以下枚举有两个枚举数: enum?EnumTest { Sun, sun }; //尽管如此,我们仍不推荐这样写 取枚举数的值 虽然枚举有类型,但取枚举数的值时,仍然需要进行类型转换。 public partial class _ENUM : System.Web.UI.Page { ??? enum Range { MIN = 0, MAX = 255 }; ??? ??? ??? protected void Page_Load(object sender, EventArgs e) ??? { ??????? Response.Write(Range.MAX); //输出为:MAX ??????? Response.Write(br); ??????? Response.Write(((int)Range.MAX).ToString()); //输出为:255 ??? } } 枚举不能放在函数中 枚举可以与类平级,也可以作为类的 field,但不能放在函数中。可以加 public 等修饰符。 ? 以下是使用枚举时几条好的建议。 优先考虑使用枚举,而不是类的静态常量 比如: public static class Day { ??? public static int Sun = 1; ??? public static int Mon = 2; ??? public static int Tue = 3; ??? //... } 应该使用如下的枚举: enum Day { Sun = 1, Mon, Tue, Wed, Thu, Fri, Sat }; 如果参数、返回值、变量等类型可以是枚举,则不要使用其它基础类型 比如: Range?r = Range.MAX; //好 int r = (int)Range.MAX; //不好 枚举命名 枚举一般使用名词或名词组合,简单枚举使用单数,标志枚举使用复数。 大多数情况下不需要更改枚举的默认类型 也就是说大多数情况下,使用 int(System.Int32)作为枚举类型。除非: 枚举是标志枚举,且标志多于 32 个(此时 int 类型装不下)。 枚举被非常大量且频繁地使用,为了节约空间使用小于 int 的类型。 不得不使用其它类型的情况。 不要在枚举中设置哨兵 我们可能觉得在枚举的两端加上哨兵,这样在判断一个数是否在枚举中时,只需要判断是否在哨兵之中。非常不幸,我们不应该这么做,这破坏了枚举的意义。 enum Day {FirstValue, Sun, Mon, Tue, Wed, Thu, Fri, Sat, LastValue?}; //FirstValue、LastValue 应该去掉 ? 简单枚举包含的值不用于组合,也不用于按位比较。 标志枚举应使用按位 OR 操作进行组合。 简单枚举 前面提到的 Day、Range 都可以称之为简单枚举,因为不能将他们各自的值组合起来。 标志枚举 标志枚举的设计有两点要注意。 指明 FlagsAttribute,以指示可以将枚举作为位域(即一组标志)处理。 枚举中各标志的值应该是以 2 的幂来赋值,即:1、2、4、8、16、32…… 举个例子,假如我们在设计 Windows 窗口程序,窗口有最小化、最大化、关闭按钮,我们想任意组合

文档评论(0)

xiaofei2001128 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档