1.枚举类型的要点:

(1)类型声明语法: enum 枚举名

(2)枚举体语法: a.成员名称 = 整数值,其他成员名称,或者其他成员与整数的表达式  b.成员之间需要用逗号隔开

(3)枚举可以继承的类型:byte、sbyte、short、ushort、int、uint、long 或 ulong

(4)枚举多个成员可以共享一个值

(5)枚举的默认值规则:第一成员没有显示设定值,那么其默认值是0,后面的项依次加1;如果后面的某个成员设定了值,那么这个值后面的成员是他的值后面依次加1

(6)获得枚举成员的字符串值:方法1:枚举.成员.ToString()   方法2:Enum.GetName()   方法:Enum.GetValues

(7)获得枚举成员的整数值:强制转化枚举成员,即:(int)枚举.成员

(8)枚举一般有两种用法,一是表示唯一的元素序列,例如一周里的各天;还有就是用来表示多种复合的状态。这个时候一般需要为枚举加上[Flags]特性标记为位域.

(9)组合多个枚举状态的方法:或运算,枚举成员 | 枚举成员;从组合状态中去掉一个元素的方法,用"^"运算符可以做到,枚举变量 ^ 枚举变量的一个成员

2.枚举类型的优点:Enums是在栈中而不是堆中建立起来的数值类型,这样运行的程序需要更少的处理器和内存的资源,你无需使用new来建立一个Enum类型。

3.Demo:

   1:      class Program
   2:      {
   3:          public enum Test : int //正确
   4:          {
   5:              ok=10000,
   6:              no=20000
   7:          }
   8:          //public enum Test3 : string//错误,枚举能够继承的类型:byte、sbyte、short、ushort、int、uint、long 或 ulong    
   9:          //{
  10:          //    ok=10000,
  11:          //    no=20000
  12:          //}
  13:          //public enum Test2 : byte//错误,超出byte的范围
  14:          //{
  15:          //    ok=10000,
  16:          //    no=20000
  17:          //}
  18:          //public enum Test5 : Test//错误,不允许整数以外类型继承
  19:          //{
  20:          //    ok=10000,
  21:          //    no=20000
  22:          //}
  23:          [Flags]
  24:          public enum Test4
  25:          {
  26:              ok,//无值的话,第一个成员默认是0
  27:              no,//值默认为1
  28:              yes=100,
  29:              yesyes,//值为101
  30:              nono=yesyes+100,
  31:              okok=yes+yes,
  32:              ook = ok//多个成员可以共享一个值
  33:          }
  34:          static void Main(string[] args)
  35:          {
  36:              Console.WriteLine((int)Test4.ok);//获得枚举名称的整数值只需强制转换即可
  37:              string str = Test4.ok.ToString();//获得枚举的名称字符串,使用ToString()
  38:              Console.WriteLine(str);
  39:              Console.WriteLine(Enum.GetName(typeof(Test4),0));
  40:              Console.WriteLine("*****Enum类方法***************************");
  41:              foreach (var item in Enum.GetValues(typeof(Test4)))
  42:              {
  43:                  Console.WriteLine(item);
  44:                  Console.WriteLine((int)item);
  45:              }
  46:              Console.WriteLine("*****Flags特性*********************************************");
  47:              Test4 tt = Test4.no | Test4.yes;//组合2个成员
  48:              Console.WriteLine(tt);//如果有Flags属性,值为:no,yes,没有Flag属性,值为:yesyes
  49:              Console.WriteLine((int)tt);//值为二者之和 101=100+1
  50:              tt = tt ^ Test4.yes;//去掉组合中的一个成员
  51:              Console.WriteLine(tt);
  52:              Console.WriteLine((int)tt);//值为1
  53:              Console.ReadKey();
  54:          }
  55:      }


图一:有Flags属性                                                    图二:无Flags属性

                                       

4.参考资料:

http://www.west263.com/www/info/21458-1.htm

http://www.cnblogs.com/BillySir/archive/2012/02/15/2353395.html

http://www.189works.com/article-48463-1.html

http://gaoling386.blog.163.com/blog/static/54046024201261793458830/

http://blog.csdn.net/aoyux/article/details/173451

http://kb.cnblogs.com/page/42561/

.Net枚举类型小结的更多相关文章

  1. Java魔法堂:枚举类型详解

    一.前言 Java的枚举类型相对C#来说具有更灵活可配置性,Java的枚举类型可以携带更多的信息. // C# enum MyColor{ RED = , BLUE = } Console.Write ...

  2. Asp.Net 将枚举类型(enum)绑定到ListControl(DropDownList)控件

    在开发过程中一些状态的表示使用到枚举类型,那么如何将枚举类型直接绑定到ListControl(DropDownList)是本次的主题,废话不多说了,直接代码: 首先看工具类代码: /// <su ...

  3. golang枚举类型 - iota用法拾遗

    在c#.java等高级语言中,经常会用到枚举类型来表示状态等.在golang中并没有枚举类型,如何实现枚举呢?首先从枚举的概念入手. 1.枚举类型定义 从百度百科查询解释如下:http://baike ...

  4. 第三条:用私有构造器或者枚举类型强化Singleton属性

    1.使用单元素的枚举类型 public enum Singleton implements Serializable { INSTANCE; private String field; public ...

  5. 在WPF中使用变通方法实现枚举类型的XAML绑定

    问题缘起 WPF的分层结构为编程带来了极大便利,XAML绑定是其最主要的特征.在使用绑定的过程中,大家都普遍的发现枚举成员的绑定是个问题.一般来说,枚举绑定多出现于与ComboBox配合的情况,此时我 ...

  6. 窥探Swift之别样的枚举类型

    想必写过程序的童鞋对枚举类型并不陌生吧,使用枚举类型的好处是多多的,在这儿就不做过多的赘述了.Fundation框架和UIKit中的枚举更是数不胜数,枚举可以使你的代码更易阅读并且可以提高可维护性.在 ...

  7. C#枚举类型的常用操作总结

    枚举类型是定义了一组"符号名称/值"配对.枚举类型是强类型的.每个枚举类型都是从system.Enum派生,又从system.ValueType派生,而system.ValueTy ...

  8. TypeScript中的枚举类型

    TypeScript拓展了Javascript原生的标准数据类型集,增加了枚举类型(enmu)和其他语言一 样 它提供我们一种数字类型的值,用来设置由于辨别的名字和方法 enum Students { ...

  9. Python 中的枚举类型~转

    Python 中的枚举类型 摘要: 枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期.月份.状态等. 枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表 ...

随机推荐

  1. IOS 类别

    在编写面向对象的程序时,你经常希望向现有的类添加一些新的行为:你总是能够为对象提供使用这些新方法的新手段.当希望为现有的类增加新行为时,我们通常会创建子类,但是有时候子类并不方便.例如,你可能会希望为 ...

  2. [Irving]WPF Invalid character in the given encoding. Line xx, position xx.' XML is not valid.

    WPF开发中发现Xaml界面中突然抽风似的提示错误 Invalid character in the given encoding. Line xx, position xx.' XML is not ...

  3. iOS开发常用输入校验

    1.数字字符校验 #define NUMBERSPERIOD @"0123456789." - (BOOL)CheckInput:(NSString *)string { NSCh ...

  4. 【原】Mongodb相关资料

    Mongodb与关系型数据库对比 Mongodb与关系型数据库对比 由于之前主要接触的是关系型数据库,所以主要将Mongodb与关系型数据库进行对比:主要从术语.Server与Client.数据定义语 ...

  5. 使用JSP处理用户注册和登陆

    1. 这是一个JSP实例,由四个JSP页面组成,处理用户的注册和登陆信息2. 首先是login.jsp,代码如下:<html><center><form method=g ...

  6. 自学hadoop(三)

    1) 关于hadoop在eclipse插件.经过自己的摸爬滚打.总结一下三条.     a) 2.0或者0.23.0吧 google比较方便.其他的可以自己编译.(这个我不敢保证.我本地环境事2.1. ...

  7. 我从其他人的Shell脚本中学到的

    我从其他人的Shell脚本中学到的 2013/08/20 | 分类: 程序员 | 2 条评论 | 标签: SHELL, 脚本 分享到:17 本文由 伯乐在线 - 伯乐在线读者 翻译自 Fizer Kh ...

  8. 现代程序设计——homework-06

    题目: http://www.cnblogs.com/xinz/p/3382048.html 这是一道要多坑有多坑的题目,题目有很多步.综合起来就是这个意思: 在很久以前,有一个大牛,当然那个时候他还 ...

  9. WINRAR评估版本弹出框消除

    网上有很多WINRAR评估版本,这些版本下载安装了之后总会有些广告弹出,让人很烦恼,现在教大家一个方法消除这些弹出框. 复制以下代码:    RAR registration data SeVeN U ...

  10. HDU 5680 zxa and set (数学 推导结论)

    zxa and set 题目链接: http://acm.hust.edu.cn/vjudge/contest/121332#problem/G Description zxa has a set , ...