博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
原创:C sharp 中 Enum的几点小 Tips
阅读量:6138 次
发布时间:2019-06-21

本文共 2143 字,大约阅读时间需要 7 分钟。

(1)为什么要使用Enum?

♥ enums枚举是值类型,数据直接存储在栈中,而不是使用引用和真实数据的隔离方式来存储。 e student{a,b,c,d,e},其中e代表student为枚举类型  e枚举属于值类型  不属于引用类型。 也就是说,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.Ada15             {16                 Console.WriteLine(s);17             }

 

 

 

 

转载于:https://www.cnblogs.com/AdaLoong/p/5337900.html

你可能感兴趣的文章
css斜线
查看>>
Windows phone 8 学习笔记(3) 通信
查看>>
重新想象 Windows 8 Store Apps (18) - 绘图: Shape, Path, Stroke, Brush
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
深入浅出NodeJS——数据通信,NET模块运行机制
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器
查看>>
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>
淘宝的几个架构图
查看>>
Android扩展 - 拍照篇(Camera)
查看>>