(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. UC浏览器 分享到朋友圈和微信好友

    用手机UC浏览器访问新浪微博,会注意到有这样的两个分享按钮: 在手机端浏览器里,点击分享按钮,就可以启动微信客户端并分享到微信.研究了下其源代码,存在这样的一个js:http://mjs.sinaim ...

  2. linux查看压缩包的文件列表

    网上看到了一篇文章: Using bzip2 with less 这篇文章介绍了一个脚本,脚本功能就是列出压缩包所压缩的文件,本文算是原文搬运,不过减少点东西以适用我日常系统运用. #!/bin/ba ...

  3. git的安装已经连github

    https://help.github.com/articles/generating-ssh-keys 1.安装git [plain]  view plain copy   sudo apt-get ...

  4. trim()方法去除字符串首尾空格

    trim()方法去除字符串首尾空格 1.原生js                 Function trimStr(str){                         Return str.r ...

  5. 关于HTML5中audio标签在手机中的autoplay

    这个问题是我最头疼的: 问题描述:在开发手机网页的时候,苹果和三星的一些浏览器不能自动开始播放 解决办法:在这个页面上弹出一个层来触发audio标签的play()方法,或者你还可以 谷歌一下----& ...

  6. [Mugeda HTML5技术教程之16]案例分析:制作跨屏互动游戏

    本节我们将要做一个跨屏互动应用的案例分析,该应用时给一家商场做活动使用的,是一个跨屏爱消除游戏.PC端页面显示在连接在PC的大屏幕上,参与活动的玩家可以用自己的手机扫描PC端页面上的二维码,连接成功后 ...

  7. debian系统下安装ssh服务

    它是什么?? SSH 为 Secure Shell 的缩写,简单地说,SSH 为建立在应用层基础上的安全协议.SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议.利用 SSH 协议可 ...

  8. 联通3g彩信设置

    手机ME865,安卓2.3.6 添加接入点名称:3gwapAPN:3gwap代理:10.0.0.172端口:80服务器:http://www.wo.com.cnMMSC:http://mmsc.myu ...

  9. 符号化Symbol(符号)体系

    http://apps.hi.baidu.com/share/detail/23143648# 符号化Symbol(符号)体系 ArcGIS Engine9.3为开发人员提供了32种符号,主要分为三大 ...

  10. Qt编程之UI与控件布局

    当然,大家都知道UI界面可以用Qt Designer在约束环境下设置编辑.ui文件,再将.ui文件转换成对应的ui_XXX.h文件,这头文件中的内容是:用C++语言实现真正的界面布局.uic -o & ...