zoukankan      html  css  js  c++  java
  • 原创:C sharp 中 Enum的几点小 Tips

    (1)为什么要使用Enum?

     enums枚举是值类型,数据直接存储在栈中,而不是使用引用和真实数据的隔离方式来存储。
    enum student{a,b,c,d,e},
    其中enum代表student为枚举类型 enum枚举属于值类型 不属于引用类型。
    也就是说,a=0,b=1,c=2,d=3,e=4,
    当student.a使用该枚举时,可用一个int类型的变量来接收此值
    也就是int num = student.a ; 相当于 int num = 1;

    有些时候,我们需要向数据库里存放一些代表着标示意义的值,
    但是存字符串会增加数据库的负载能力
    于是.net便发明了这种枚举类型,用于更好的在编程过程中记忆每一个标示数字所代表的意义
    比如:
    男和女
    我们想存放在数据库中这两个值,直接存放“男”,“女”这两个char或者string值也可以
    但是最优的方式便是存放int类型的值 如0代表男,1代表女
    那么我们就创建一个枚举类
    enum gender{boy,girl}
    在取值的时候就用gender.boy来代表男 gender.girl代表女
    这时存放数据库中的值就是0和1了
    (2)默认情况下,枚举中的第一个变量被赋值为0,其他的变量的值按定义的顺序来递增(0,12,3...),因此以下两个代码定义是等价的:
    1     enum TrafficLight  
    2     {  
    3         Green,  
    4         Yellow,  
    5         Red  
    6     }  
    1. enum TrafficLight  
    2. {  
    3.     Green = 0,  
    4.     Yellow = 1,  
    5.     Red = 2  
    (3)enum枚举类型的变量的名字不能相同,但是值可以相同,例如:
    1 num TrafficLight  
    2 {  
    3     Green = 0,  
    4     Yellow = 1,     // Duplicate value, OK   
    5     Red = 1         // Duplicate value, OK   
    6 }  
    
    

    (4)如果enum中的部分成员显式定义了值,而部分没有;那么没有定义值的成员还是会按照上一个成员的值来递增赋值,例如:

     1     enum LoopType  
     2     {  
     3         None,          // value is 0    
     4         Daily,         // value is 1    
     5         Weekly = 7,  
     6         Monthly,       // value is 8    
     7         Yeayly,        // value is 9    
     8         DayGap = 15,           
     9         WeekGap,       // value is 16    
    10         MonthGap,      // value is 17    
    11         YearGap        // value is 18    
    12     }  

    (5)enum枚举成员可以用来作为位标志,同时支持位的操作(位与,位或等等),例如:???

    bite
    1     enum CardDeckSettings : uint  
    2     {  
    3         SingleDeck = 0x01,      // Bit 0  
    4         LargePictures = 0x02,   // Bit 1  
    5         FancyNumbers = 0x04,    // Bit 2  
    6         Animation = 0x08        // Bit 3      
    7     }  

    十六进制数的一个作用就是用来进行位运算和操作,很方便。

    (6)获得所有符号名的方法

     1 public enum MyFamily
     2         {
     3             YANGZHIPING = 1,
     4             GUANGUIQIN = 2,
     5 
     6             YANGHAORAN = 4,
     7             LIWEI = 8,
     8 
     9             GUANGUIZHI = 16,
    10             LISIWEN = 32,
    11             LISIHUA = 64,
    12         } 
    13 
    14             foreach (string s in Enum.GetNames(typeof(MyFamily)))//注意typeof  Hanson.Ada
    15             {
    16                 Console.WriteLine(s);
    17             }
     
  • 相关阅读:
    计算机编程语言有哪些?
    JS/Jquery遍历JSON对象、JSON数组、JSON数组字符串、JSON对象字符串
    原生js弹力球
    js中的位置属性
    javascript中常见的表单验证项
    深入理解系统调用
    计一次后怕的排错经历
    Oracle 11G ASM新加磁盘无法init disk
    Oracle需要清理的日志
    openstack-neutron
  • 原文地址:https://www.cnblogs.com/AdaLoong/p/5337900.html
Copyright © 2011-2022 走看看