


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C#枚举类型概念及应用浅析C#枚举类型是什么呢?C#枚举类型是怎么使用的呢?C#枚举类型有什么需要注意的地方呢?那么本文就向你介绍这些内容。C#枚举类型(也称为枚举)为定义一组可以赋给变量的命名整数常量提供了一种有效的方法。例如,假设您必须定义一个变量,该变量的值表示一周中的一天。该变量只能存储七个有意义的值。若要定义这些值,可以使用枚举类型。枚举类型是使用 enum 关键字声明的。1. enumDaysSunday,Monday,Tuesday, 2. Wednesday,Thursday,Friday,Saturday; 3. enumMonths:byteJan,Feb,Mar,Apr, 4. May,Jun,Jul,Aug,Sep,Oct,Nov,Dec;默认情况下,枚举中每个元素的基础类型是 int。可以使用冒号指定另一种整数值类型,如前面的示例所示。以下是使用枚举而不使用数值类型的好处:明确为客户端代码指定哪些值是变量的有效值。在 Visual Studio 中,IntelliSense 列出定义的值。如果不为枚举数列表中的元素指定值,则它们的值将以 1 为增量自动递增。在前面的示例中,Days.Sunday 的值为 0,Days.Monday 的值为 1,依此类推。创建新的 Days 对象时,如果不显式为其赋值,则它将具有默认值 Days.Sunday (0)。创建枚举时,应选择最合理的默认值并赋给它一个零值。这便使得只要在创建枚举时未为其显式赋值,则所创建的全部枚举都将具有该默认值。如果变量 meetingDay 的类型为 Days,则只能将 Days 定义的某个值赋给它(无需显式强制转换)。如果会议日期更改,可以将 Days 中的新值赋给 meetingDay:5. DaysmeetingDay=Days.Monday; 6. /. 7. meetingDay=Days.Friday;C#枚举类型说明:可以将任意整数值赋给 meetingDay。例如,代码行 meetingDay = (Days) 42 不会产生错误。但也不应该这样做,因为默认约定的是枚举变量只容纳枚举定义的值之一。将任意值赋给枚举类型的变量很有可能会导致错误。可以将任意值赋给枚举类型的枚举数列表中的元素,也可以使用计算值:8. enumMachineState 9. 10. PowerOff=0, 11. Running=5, 12. Sleeping=10, 13. Hibernating=Sleeping+5 14. C#枚举类型作为位标志 可以使用C#枚举类型定义位标志,从而使该C#枚举类型的实例可以存储枚举数列表中定义的值的任意组合。(当然,某些组合在您的程序代码中可能没有意义或不允许使用。)创建位标志枚举的方法是应用 System.:.FlagsAttribute 属性并适当定义一些值,以便可以对这些值执行 AND、OR、NOT 和 XOR 按位运算。在位标志枚举中包含一个值为零(表示“未设置任何标志”)的命名常量。如果零值不表示“未设置任何标志”,则请不要为标志指定零值。在下面的示例中,定义了 Days 枚举的另一个版本,即 Days2。Days2 具有 Flags 属性,且它的每个值都是 2 的若干次幂,指数依次递增。这样您就可以创建值为 Days2.Tuesday 和 Days2.Thursday 的 Days2 变量。15. Flags 16. enumDays2 17. 18. None=0x0, 19. Sunday=0x1, 20. Monday=0x2, 21. Tuesday=0x4, 22. Wednesday=0x8, 23. Thursday=0x10, 24. Friday=0x20, 25. Saturday=0x40 26. 27. classMyClass 28. 29. Days2meetingDays=Days2.Tuesday|Days2.Thursday; 30. C#枚举类型的问题:若要在某个枚举上设置标志,请使用逻辑 OR 运算符,如下面的示例所示:31. /InitializewithtwoflagsusingbitwiseOR. 32. meetingDays=Days2.Tuesday|Days2.Thursday; 33. /SetanadditionalflagusingbitwiseOR. 34. meetingDays=meetingDays|Days2.Friday; 35. Console.WriteLine(Meetingdaysare0,meetingDays); 36. /Output:MeetingdaysareTuesday,Thursday,Friday 37. /RemoveaflagusingbitwiseXOR. 38. meetingDays=meetingDaysDays2.Tuesday; 39. Console.WriteLine(Meetingdaysare0,meetingDays); 40. /Output:MeetingdaysareThursday,Friday若要确定是否设置了特定标志,请使用逻辑 AND 运算,如下面的示例所示:41. /TestvalueofflagsusingbitwiseAND. 42. booltest=(meetingDays&Days2.Thursday)=Days2.Thursday; 43. Console.WriteLine(Thursday0ameetingday., 44. test=true?is:isnot); 45. /Output:Thursdayisameetingday.有关使用System.:.FlagsAttribute 属性定义枚举类型时需要考虑的事项的更多信息,请参见System.:.Enum。使用 System.Enum 方法发现和操作枚举值所有枚举都是System.:.Enum 类型的实例。不能从System.:.Enum 派生新类,但可以使用它的方法发现有关枚举实例中的值的信息以及操作这些值。46. strings=Enum.GetName(typeof(Days),4); 47. Console.WriteLine(s); 48. Console.WriteLine(ThevaluesoftheDaysEnumare:); 49. foreach(intiinEnum.GetValues(typeof(Days) 50. Console.WriteLine(i); 51. Console.WriteLine(ThenamesoftheDaysEnumare:); 52. foreac
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 火车开啦(教案)-二年级上册苏少版(2012)音乐
- 2025年区块链技术的跨境数据传输
- 2025天门二建考试题库及答案
- 2025矿山电工自考试题及答案
- 2025教师口语考试题及答案
- 2025法考试题及答案大全
- DB37-5090-2017 蒸压灰砂砖砌体技术规程
- DB5201-T 125-2022 停车场(库)信息系统建设规范
- 焊接结构用铸钢件-编制说明
- 设计院项目管理流程及标准
- 重庆八中高 2027 届高二(上)第一次月考语文试卷(含答案)
- 山西中考语文5年(21-25)真题分类汇编-文学类文本阅读
- 2025云南红河红家众服经营管理有限公司社会招聘工作人员8人笔试模拟试题及答案解析
- 基础水文数据采集与管理项目方案
- 2025关于信息技术外包合同
- 河北省金太阳2025-2026学年高三上学期9月联考语文试卷
- 组织工程瓣膜修复研究-洞察及研究
- 注塑机操作安全培训课件
- 2.1《整十、整百数乘一位数的口算和估算》(课件) -2025-2026学年三年级数学上册 苏教版
- 艾媒咨询2025年中国新式茶饮大数据研究及消费行为调查数据
- 雷达式水位计安装单元工程质量验收评定表
评论
0/150
提交评论