- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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 窗口程序,窗口有最小化、最大化、关闭按钮,我们想任意组合
您可能关注的文档
最近下载
- 我国散光矫正型人工晶状体临床应用专家共识.docx
- 科研伦理与学术规范.docx VIP
- 【教学评一体化】第三单元 赏山川日月,悟忧乐情怀 整体公开课一等奖创新教学设计-【大单元教学】统编版语文九年级上册名师备课系列.docx VIP
- 缅怀先烈精神-传承红色基因课件.pptx VIP
- 1.1 同底数幂的乘法 双减分层作业设计样例 2021—2022学年北师大版数学七年级下册 .docx VIP
- 朱良春杂病廉验特色发挥.docx
- 绘本《我妈妈》教学设计.docx
- 人教版(2024)英语七年级上册全册教案.DOCX VIP
- 在线网课知慧《音乐艺术概论》课后章节测试答案.docx
- 2024年中煤集团西南分公司招聘笔试参考题库附带答案详解.pdf
文档评论(0)