enums枚举是值类型,数据直接存储在栈中,而不是使用引用和真实数据的隔离方式来存储。

(1)默认情况下,枚举中的第一个变量被赋值为0,其他的变量的值按定义的顺序来递增(0,12,3...),因此以下两个代码定义是等价的:

enum TrafficLight{  Green,  Yellow,  Red
}
enum TrafficLight
{  Green = 0,  Yellow = 1,
Red = 2
}

(2)enum枚举类型的变量的名字不能相同,但是值可以相同,例如:

enum TrafficLight{
Green = 0,
Yellow = 1,     // Duplicate value, OK
Red = 1         // Duplicate value, OK
}

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

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

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

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

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

1. 枚举(enum type)通常用来表示一组常量。由于枚举是强类型的,这在编程中给我们提供了极大的方便。

2. 枚举的定义:

public enum Sex{男 = 0,女 = 1}

或者:如果只给男赋值,那么女=1

public enum Sex{男 = 0,女}

枚举的优点:
<1>枚举可以使代码更易于维护,有助于确保给变量指定合法的、期望的值。

<2>枚举使代码更清晰,允许用描述性的名称表示整数值,而不是用含义模糊的数来表示。

<3>枚举使代码更易于键入。在给枚举类型的实例赋值时,VS.NET IDE会通过IntelliSense弹出一个包含可接受值的列表框,减少了按键次数,并能够让我们回忆起可能的值

枚举在软件开发中的使用场景

在数据库设计人员表(person)时有性别字段Sex(0代表男,1代表女),我们一般用bit或者int类型表示。

1.在编程时我们给Sex字段赋值的方式为:

1).  Sex=0;

2).  Sex=(int)SexEnum.Man;

其中SexEnum为定义性别的枚举类型,我们可以看出第二种方式的可读性更强。

2.在编程时我们,如果Sex字段作为一个搜索条件的话,我们可能需要以下拉选择的方式展现所有可以选择的情况。那么我们就需要将SexEnum转换成一个字典集合然后绑定到对应的select标签,具体怎么实现请看下面的示例代码。

………………………………

enum、int、string三种类型之间的互转

执行结果如下:

枚举实例声明:public enum TimeOfDay
{Moning = 0,Afternoon = 1,Evening = 2,
};使用:public string getTimeOfDay(TimeOfDay time){string result = string.Empty;switch (time){case TimeOfDay.Moning:result = "上午";break;case TimeOfDay.Afternoon:result = "下午";break;case TimeOfDay.Evening:result = "晚上";break;default:result = "未知";break;}return result;}

枚举方法 
<1>获取枚举字符串
TimeOfDay time = TimeOfDay.Afternoon;
Console.WriteLine(time.ToString());//输出:Afternoon
<2>Enum.Parse()方法。这个方法带3个参数,第一个参数是要使用的枚举类型。其语法是关键字typeof后跟放在括号中的枚举类名。typeof运算符将在第5章详细论述。第二个参数是要转换的字符串,第三个参数是一个bool,指定在进行转换时是否忽略大小写。最后,注意Enum.Parse()方法实际上返回一个对象引用—— 我们需要把这个字符串显式转换为需要的枚举类型(这是一个取消装箱操作的例子)。对于上面的代码,将返回1,作为一个对象,对应于TimeOfDay.Afternoon的枚举值。在显式转换为int时,会再次生成1。
TimeOfDay time2 = (TimeOfDay) Enum.Parse(typeof(TimeOfDay), "afternoon", true);
Console.WriteLine((int)time2);//输出1
<3>得到枚举的某一值对应的名称
lbOne.Text = Enum.GetName(typeof(TimeOfDay), 0);
 <4>得到枚举的所有的值 
foreach (int i in Enum.GetValues(typeof(TimeOfDay)))
            lbValues.Text += i.ToString();
 <5>枚举所有的名称 
foreach(string temp in Enum.GetNames(typeof(TimeOfDay)))
            lbNames.Text+=temp;

C#中Enum用法小结相关推荐

  1. alter在mysql_MySQL中ALTER用法小结

    MySQL中ALTER命令小结. 1.表操作 #修改表名 语法: ALTER TABLE table_name RENAME [TO]new_table_name; 举例:ALTER TABLE st ...

  2. JAVA中this用法小结

    我知道很多朋友都和我一样:在JAVA程序中似乎经常见到"this",自己也偶尔用到它,但是到底"this"该怎么用,却心中无数!很多人一提起它,就说" ...

  3. java this用法_java中this用法小结

    Java关键字this只能用于方法方法体内.当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this.因此,this只能在类中的非静态方法中使用,静态 ...

  4. java中this_JAVA中this用法小结

    Java关键字this只能用于方法方法体内.当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this.因此,this只能在类中的非静态方法中使用,静 ...

  5. Swift中enum用法

    注:摘自斯坦福swift公开课 在swift中,enum(枚举类型)和struct一样都是值类型,进行值传递.和其他语言不同的是在swift中,enum中的每个case可以有与之关联的数据(assoc ...

  6. java .this的用法_JAVA中this用法小结

    Java中的this随处可见,用法也多,现在整理有几点: 1. this是指当前对象自己. 当在一个类中要明确指出使用对象自己的的变量或函数时就应该加上this引用.如下面这个例子中: 1 publi ...

  7. oracle中$的用法,关于expdp 中query用法小结

    今天看到群里有人问到关于在使用expdp导出数据中使用query参数报错的解决方法,自己也出于好奇心瞎折腾了一把,现记录如下 1.第一次尝试的时候[oracle@DB ~]$ expdp scott/ ...

  8. linux 中wc 用法小结

    语法:wc [选项] 文件- 说明:该命令统计给定文件中的字节数.字数.行数.如果没有给出文件名,则从标准输入读取.wc同时也给出所有指定文件的总统计数.字是由空格字符区分开的最大字符串. (1) 统 ...

  9. mysql 中enum用法

    enum最大长度65535,也就是可以存65535个预定义值, enum底层存的是十进制整数,严格按顺序1,2,3,4,5...排列,固千万不要用enum来存数字 用例:一件商品从付款到收货的流程的5 ...

最新文章

  1. MySQL最新版8.0.21安装配置教程~
  2. java多线程-CyclicBarrier
  3. python 整合excel_Python将多个excel文件合并为一个文件
  4. zabbix items 配置
  5. 傅立叶变换和小波变换入门学习
  6. ITK:为图像中标记区域的边界上色
  7. 计算机检索技巧知识,初学者常用电脑技巧知识
  8. [转载]常用CASE工具介绍
  9. multinorm r语言_与心理学数据分析相关的R工具包
  10. 路由器笔记 CCNA
  11. 微服务架构的分布式事务解决方案
  12. 如何将html转为report,如何把Html5 Report Viewer添加到Web项目
  13. HG255D电信原版刷机实战整理,既HG255D刷uboot、Openwrt
  14. 谷歌浏览器设置暗黑模式
  15. 2020互联网行业术语
  16. vue+swiper4+js实现滑动的筋斗云效果
  17. B端和C端产品的理解
  18. Linux查看主机出厂日期,linux 生产常用命令
  19. 弓形算圆弧半径c语言,关于弓形面积求圆半径
  20. org.springframework.context.NoSuchMessageException:错误

热门文章

  1. 【python】龟兔赛跑
  2. go语言中func后、函数名前的参数作用
  3. ExoPlayer播放器在瑞芯微rk3228CPU播放H264编码格式1080P媒体资源编解码器解码失败问题
  4. Marching Cubes算法
  5. Qt开发一个小软件记录
  6. 蓝桥杯算法练习题答案
  7. Alpha通道是什么意思,和rgb通道有什么区别
  8. 使用灵曜内网穿透 免费实现外网访问内网Vue
  9. 用MaskedTextBox制作 IP地址输入框
  10. PHP项目——外卖点餐系统后台管理解析