(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...),因此以下两个代码定义是等价的:
     enum TrafficLight
{
Green,
Yellow,
Red
}
  1. enum TrafficLight
  2. {
  3. Green = 0,
  4. Yellow = 1,
  5. Red = 2
  6. }
(3)enum枚举类型的变量的名字不能相同,但是值可以相同,例如:
 num TrafficLight
{
Green = ,
Yellow = , // Duplicate value, OK
Red = // Duplicate value, OK
}

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

     enum LoopType
{
None, // value is 0
Daily, // value is 1
Weekly = ,
Monthly, // value is 8
Yeayly, // value is 9
DayGap = ,
WeekGap, // value is 16
MonthGap, // value is 17
YearGap // value is 18
}

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

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

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

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

 public enum MyFamily
{
YANGZHIPING = ,
GUANGUIQIN = , YANGHAORAN = ,
LIWEI = , GUANGUIZHI = ,
LISIWEN = ,
LISIHUA = ,
} foreach (string s in Enum.GetNames(typeof(MyFamily)))//注意typeof Hanson.Ada
{
Console.WriteLine(s);
}
 

原创:C sharp 中 Enum的几点小 Tips的更多相关文章

  1. golang中设置Host Header的小Tips

    前言 笔者最近时间一直在学习和写Ruby和Go,尤其是Go,作为云计算时代的标准语言,写起来还是相当有感觉的,难过其会越来越火. 不过写的过程中,也遇到了一些小问题,本文就是分享关于go语言设置 HT ...

  2. MYSQL中 ENUM 类型

    MYSQL中 ENUM 类型的详细解释 ENUM类型 ENUM 是一个字符串对象,其值通常选自一个允许值列表中,该列表在表创建时的列规格说明中被明确地列举. 在下列某些情况下,值也可以是空串(&quo ...

  3. 【原创】Matlab中plot函数全功能解析

    [原创]Matlab中plot函数全功能解析 该帖由Matlab技术论(http://www.matlabsky.com)坛原创,更多精彩内容参见http://www.matlabsky.com 功能 ...

  4. mysql中enum的用法

    字段 类型 长度/值*1 整理 属性 Null 默认2 额外 注释 enum         说明:enum类型的字段,若长度值写长度1/2,报错 (1)  数据长度为1,则为0,1,2… (2)   ...

  5. JAVA中enum的常见用法

    JAVA中enum的常见用法包括:定义并添加方法.switch.遍历.EnumSet.EnumMap 1.定义enum并添加或覆盖方法 public Interface Behaviour{ void ...

  6. Java中enum的学习总结

    一.通常的定义常量的方法 public class Sex{ public final static int MALE = 1; public final static int FEMALE=2; } ...

  7. MVC图片上传详解 IIS (安装SSL证书后) 实现 HTTP 自动跳转到 HTTPS C#中Enum用法小结 表达式目录树 “村长”教你测试用例 引用provinces.js的三级联动

    MVC图片上传详解   MVC图片上传--控制器方法 新建一个控制器命名为File,定义一个Img方法 [HttpPost]public ActionResult Img(HttpPostedFile ...

  8. 关于python中Enum的个人总结

    关于python中Enum的个人总结 初识 可以通过enum模块导入 语法 初始化: 可以通过enum_ = Enum('class_name', names,start = 1)来创建,其中name ...

  9. Django中的ORM框架使用小技巧

      Django中的ORM框架使用小技巧 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. Django对各个数据提供了很好的支持,包括PostgreSQL,MySQL,SQLite ...

随机推荐

  1. 学习unity的第一个小游戏(Roll the ball)的笔记

    1.摄像机的跟随运动,逻辑就是保持摄像机跟主角的距离不变(Undate()函数). offset=trandform.position-player.position. Undate() { tran ...

  2. SQL中将某个表中的多行数据在一个字段显示

    项目需求:将某个表中的多行数据在一个字段显示,如下: 比如表A中有字段 ID,NAME, 表B中有字段ID,PID,DES, 表A,表B中的数据分别如下: ID NAME1 张三2 李四 ID PID ...

  3. java 操作POI参考文章

    http://blog.csdn.net/softwave/article/details/38071825 http://www.cnblogs.com/ivan0626/archive/2013/ ...

  4. Scala学习文档-样本类与模式匹配(match,case,Option)

    样本类:添加了case的类便是样本类.这种修饰符可以让Scala编译器自动为这个类添加一些语法上的便捷设定. //样本类case class //层级包括一个抽象基类Expr和四个子类,每个代表一种表 ...

  5. 帮小黎解决问题C++巩固获得数字每个位置上的数

    现在有一个数字 a= 12345; 想要取得这个数字上的没一个数字 使用 除法 +模除 的方法可以获得 原理:除(/)得到的是商     模除(%)的到的是余数 采用这种方式,先将要求的数的某一位   ...

  6. 开心菜鸟系列----函数作用域(javascript入门篇)

      1 <!DOCTYPE html>   2 <html>   3 <script src="./jquery-1.7.2.js"></ ...

  7. explorer.exe进程简单介绍

    explorer.exe是Windows程序管理器或者Windows资源管理器,它用于管理Windows图形壳,包括开始菜单.任务栏.桌面和文件管理.不过也发现有大量的恶意病毒木马插入到explore ...

  8. poj3299

                                                                                                         ...

  9. 【Python脚本】Eclipse IDE扩展PyDev插件安装

    作为一名Python的初学者,其实不用太在意IDE了,我觉得开始的时候用用自带的 IDLE 也挺好的. 还有 DreamPie 也挺好的.都是一些轻量级的IDE. 因为我正好安装有Eclipse,平时 ...

  10. 【转】PF_NETLINK应用实例NETLINK_KOBJECT_UEVENT具体实现--udev实现原理

    相对于linux来说,udev还是一个新事物.然而,尽管它03年才出现,尽管它很低调(J),但它无疑已经成为linux下不可或缺的组件了.udev是什么?它是如何实现的?最近研究Linux设备管理时, ...