• .Net枚举类型小结


    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属性

    image                                        image

    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/

  • 相关阅读:
    ubuntu 16.04 安装显卡驱动,再安装cuda
    8. golang 基本类型转换
    7.golang的字符串 string
    5. 变量定义
    4. 代码规范
    3.golang 的注释
    1.windows server 201x
    exec 命令
    powershell
    1.Dockerfile
  • 原文地址:https://www.cnblogs.com/youchun/p/3381754.html
Copyright © 2020-2023  润新知