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. 怎样在 Ubuntu 中修改默认程序

    导读 作为一个新手,你需要知道如何在 Ubuntu 中修改任何默认程序,这也是我今天在这篇指南中所要讲的. 对于我来说,安装 VLC 多媒体播放器是安装完 Ubuntu 16.04 该做的事中最先做的 ...

  2. CSS基础知识——选择器

    选择器 元素选择器# 文档元素为最基本的选择器 例子:div{属性:值}; 选择器分组 例子:h2,p{属性:值}; 表示符合这两种规则的元素设置相同的属性值 通配选择器 表示所有元素 类选择器 应用 ...

  3. 如何在 Windows Azure 的虚拟机 ubuntu 上面安装和配置 openVPN(一)

    这篇文章,既是写给大伙儿的,也是写给自己的.本文要求读者需要有一定的英文基础和动手能力. 因为有MSDN subscriptions,所以每个月有100$可以使用windows azure,于是想尝试 ...

  4. Redis3.0 Install

    Installation Download, extract and compile Redis with: $ wget http://download.redis.io/releases/redi ...

  5. 【恒天云技术分享系列11】Sheepdog简介

    sheepdog是近几年开源社区新兴的分布式块存储文件系统,采用完全对称的结构,没有类似元数据服务的中心节点.这种架构带来了线性可扩展性,没有单点故障和容易管理的特性.对于磁盘和物理节点,SheepD ...

  6. Hibernate初认识以及HelloWorld

    一.Hibernate初认识 1. Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. 2.对 ...

  7. AVD设置屏幕大小

    相关资料: 1.http://jingyan.baidu.com/article/fedf0737775d2835ac897700.html

  8. HDU 4884 TIANKENG’s rice shop (模拟)

    TIANKENG's rice shop 题目链接: http://acm.hust.edu.cn/vjudge/contest/123316#problem/J Description TIANKE ...

  9. UVa 1252 Twenty Questions (状压DP+记忆化搜索)

    题意:有n件物品,每件物品有m个特征,可以对特征进行询问,询问的结果是得知某个物体是否含有该特征,要把所有的物品区分出来(n个物品的特征都互不相同), 最小需要多少次询问? 析:我们假设心中想的那个物 ...

  10. dao 获取表最大排序实现

    public Long getMaxOrder(Long parentId) { Query query = this.getSession().createSQLQuery( "selec ...