本节主要内容包括:

  枚举类型全解;

  位标记应用;

  枚举应用规则。

Ⅰ、枚举

  在哪里可以看到枚举?打开每个文件的属性,我们会看到只读、隐藏的选项;操作一个文件时,你可以采用只读、可写、追加等模式。

  在.net中可以选择以类的静态字段来表达这种简单的分类结构,但是更明智的选择显然是--枚举!

  所有的枚举类型都隐式而且只能隐式的继承自System.Enum类型,System.Enum类型是引用类型,继承自System.ValueType的唯一不为值类型的引用类型。

  枚举类型是值类型,分配于线程的堆栈中,自动继承于Enum类型,但是本身不能被继承;Enum类型是引用类型,分配于托管堆中,Enum本身不是枚举类型,但是提供了操作枚举类型的公用方法。

        public enum week : int{sun = 7,mon = 1,tue, wed, thur, fri, sat,weekend = sun}
  a.类型转换:因为枚举类型本质上是证书类型的集合,因此可以与整数类型进行相互的类型转换,但是必须是显式的。    
            int i = (int)week.fri;week j = (week)3;

    或者用Parse方法来间接完成。  week w = (week)Enum.Parse(typeof(week),"2");

   b.与字符串的映射:

      包括ToString实例方法和Parse静态方法。     

   c.不同枚举的相互转换: 显示转换,如

      OtherWeek i = OtherWeek.mon;      

      week today = (week)i;

   d.与其他引用类型转换:

      Enum继承自--ValueType,Icomparable,IFormattable,IConvertible.

      因此,可以显式转换以上类型,和System.Object、System.Enum.

   e.常用方法:

      GetNames,获取枚举中符号名称数组;

      GetValues,获取枚举中所有符号数组;

      IsDefined,判断符号或者整数是否存在于枚举中;

      GetUnderlyingType,返回枚举实例的声明类型。    
    

Ⅱ、位枚举

  带[Flags]特性来标记的枚举。FlagsAttribute特性的作用是将枚举成员处理为位标记,而不是孤立的常数。  

  a.Enum.IsDefined方法不能应对位枚举成员,可以用该数值与枚举成员进行“位与”运算,结果不为0则表示该变量中包含该枚举成员,如    if ((test & Color.Red) !=0)    b.Flags特性将影响ToString、Parse和Format方法的执行过程和结果。   

  

  

转载于:https://www.cnblogs.com/xishi7/p/4259100.html

《你必须知道的.NET》--简易不简单:认识枚举(Ⅲ)相关推荐

  1. 程序员们都必须知道的8种通用数据结构

    数据结构是一种特殊的组织和存储数据的方式,可以使我们可以更高效地对存储的数据执行操作. 数据结构在计算机科学和软件工程领域具有广泛而多样的用途. 几乎所有已开发的程序或软件系统都使用数据结构. 此外, ...

  2. 你必须知道的.net学习总结

    着几天在看<你必须知道的.net>,这次看书和以往不同,以前是把自己喜欢的章节看了.但是这次决定把一本书详细的看看. 在第一章第一节中主要讲的是"对象",我想每一个程序 ...

  3. 数据科学中必须知道的5个关于奇异值分解(SVD)的应用

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|机器学习算法那些事 前言:本文为大家介绍了5个关于奇异值 ...

  4. [你必须知道的css系列]第一回:丰富的利器2:CSS选择符之子选择符、相邻选择符...

    对了,接下来要讲的属性选择符,相邻选择符,子对象选择符可能大家稍微有点陌生了,这当然也是有原因的,因为IE6及以下的浏览器并不支持这几个选择符,而 大多数从事这方面工作的技术人员,多数时候还是主要考虑 ...

  5. [你必须知道的.NET]第二十二回:字符串驻留(上)---带着问题思考

    发布日期:2008.8.27 作者:Anytao  © 2008 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 说在,开篇之前 走钢丝的人,在刺激中体验快感.带着问题思考,在问 ...

  6. [你必须知道的.NET]第二十一回:认识全面的null

    <你必须知道的.NET>网站 | Anytao技术博客  [你必须知道的.NET]第二十一回:认识全面的null 发布日期:2008.7.31 作者:Anytao © 2008 Anyta ...

  7. 《你必须知道的.NET》,蓄势待发;博客园开发者征途,又添新作

    博客园CLR基础研究团队|Anytao技术博客|<你必须知道的.NET>网站 <你必须知道的.NET>,蓄势待发:博客园开发者征途,又添新作 发布日期:2008.3.5 作者: ...

  8. 每个程序员都必须知道的8种数据结构

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | http://suo.im/6oo92L 快速 ...

  9. python语言必背代码-Python新手必须知道的25条知识点

    原标题:Python新手必须知道的25条知识点 1.到底什么是Python?你可以在回答中与其他技术进行对比 下面是一些关键点: Python是一种解释型语言.这就是说,与C语言和C的衍生语言不同,P ...

  10. 你必须知道的.Net 读书笔记----new 关键字 和const readonly

    最近在读<你必须知道的.Net>,读到一些比较好的知识点.记下来 1. new 的几种 用法, a) 作为修饰符修饰方法和变量(当作为方法的修饰符时,有破坏OO原则的嫌疑) b) 作为关键 ...

最新文章

  1. Linux软件安装包中devel与非devel包之间的区别
  2. 电脑主板维修_自学电脑主板维修第45讲
  3. vector 查找_同样是Excel中的查找函数,这个函数却比VLOOKUP功能强100倍
  4. ModelAttribute注解
  5. 《leetcode》first-missing-positive
  6. Silverlight 2.5D RPG游戏技巧与特效处理:(七)动画特写
  7. jzoj3738-[NOI2014模拟7.11]理想城市(city)【树,模型转换】
  8. strtoupper 小写_PHP strtoupper()函数与示例
  9. Qt工作笔记-QList (链表) QVector (数组)【转载】
  10. Java SE 9:使用IntelliJ IDE开发和测试模块之间的隐式可读性(第5部分)
  11. FR切换sheet时隐藏参数面板
  12. JMeter——JMeter如何进行汉化
  13. xpraid安装_在Win2003/XP安装光盘中集成RAID驱动 不用软驱装RAID/SATA/SAS驱动
  14. Graphpad prism 使用教程汇总(更新)
  15. qsnctf queen wp
  16. 8个视频素材网站,免费可商用,视频剪辑必备。
  17. Arduino实验二十九 PCF8591数模转换传感器实验
  18. 【VBScript】MsgBox()函数
  19. 生物正交靶向的细胞膜仿生纳米颗粒|GPI-NY-ESO-1融合蛋白的细胞膜|天然细胞膜伪装微纳米载体的仿生设计|红细胞膜包裹的聚吡咯纳米颗粒
  20. 学术论文--论文查看的网站/快速查看中英文文献/不怕难

热门文章

  1. 从Waymo挖来感知负责人张一萌,以及Pony.ai的又半年
  2. 特斯拉两高管被爆离职,股价狂跌超过10%,马斯克宣布高层大换血
  3. 自动驾驶红旗车,背后站着小马哥
  4. 马斯克怒删特斯拉和SpaceX脸书主页!硅谷二马恩怨再升级
  5. Facebook发布张量理解库,自动编译高性能机器学习核心
  6. JQuery使用deferreds串行多个ajax请求
  7. 洛谷 P3359 改造异或树
  8. jmeter插件下载
  9. jekins 持续集成手记
  10. windows 下eclipse 连HBASE