博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
你用Enum做过这些吗?
阅读量:5788 次
发布时间:2019-06-18

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

2012-03-17

今天我们来讲一下枚举。

enum 关键字用于声明枚举,即一种由一组称为枚举数列表的命名常量组成的独特类型。

The enum keyword is used to declare an enumeration, a distinct type that consists of a set of named constants called the enumerator list.(in MSDN)

Example1:

1 namespace ConsoleApplication1  2 {
3 enum Days : byte 4 {
5 Sunday = 1, 6 Monday, 7 Tuesday, 8 Wednesday, 9 Thursday, 10 Friday, 11 Saturday 12 } 13 14 class Program 15 {
16 static void Main(string[] args) 17 {
18 } 19 } 20 }

  上面一段代码,声明了一个名字为Days的枚举类型,每个枚举值的类型指定为byte。枚举支持类型byte, sbyte, short, ushort, int, uint, long, or long。同时,我们改变了它的初始化值(默认为0)。但是其实.Net推荐我们使用默认值。

Example2:

1 namespace ConsoleApplication1  2 {
3 enum Days : byte 4 {
5 Sunday = 1, 6 Monday, 7 Tuesday, 8 Wednesday, 9 Thursday, 10 Friday, 11 Saturday 12 } 13 14 class Program 15 {
16 static void Main(string[] args) 17 {
18 Days day = (Days)9; 19 Days day2 = (Days)6; 20 Console.WriteLine(day); 21 Console.WriteLine(day2); 22 } 23 } 24 }

稍作修改。我们发现对day的赋值是一个越界的值,但是编译器没有报错。我们看一下输出结果:

9

Friday

因为是一个越界的值,没有正常输出,而是输出一个9,而第二个正常输出Friday。这样的赋值编译器没有报错,所以将错误隐藏到了使用的时候。可以假设,如果我们用赋了越界值的枚举变量去做判断,如果我们直接使用它时,结果我们不得而知。

Example3:

namespace ConsoleApplication1 {
[Flags] enum Days {
None = 0x0, Sunday = 0x1, Monday = 0x2, Tuesday = 0x4, Wednesday = 0x8, Thursday = 0x10, Friday = 0x20, Saturday = 0x40 } class Program {
static void Main(string[] args) {
// Initialize with two flags using bitwise OR. Days meetingDays = Days.Tuesday | Days.Thursday; // Set an additional flag using bitwise OR. meetingDays = meetingDays | Days.Friday; Console.WriteLine("Meeting days are {0}", meetingDays); // Output: Meeting days are Tuesday, Thursday, Friday // Remove a flag using bitwise XOR. meetingDays = meetingDays ^ Days.Tuesday; Console.WriteLine("Meeting days are {0}", meetingDays); // Output: Meeting days are Thursday, Friday // Test value of flags using bitwise AND. bool test = (meetingDays & Days.Thursday) == Days.Thursday; Console.WriteLine("Thursday {0} a meeting day.", test == true ? "is" : "is not"); // Output: Thursday is a meeting day. } } }

使用enum作为位标志,然后可以使用位运算做一个操作,使enum更能让人能够理解它的用途用意。

转载于:https://www.cnblogs.com/OliverZh/archive/2012/03/17/SpecialDotNet-1.html

你可能感兴趣的文章
感悟贴2016-05-13
查看>>
vim使用教程
查看>>
JDK在LINUX系统平台下的部署案例与总结
查看>>
跨vlan通信-----单臂路由技术
查看>>
百度编辑器ueditor 光标位置的坐标
查看>>
DEV-C++ 调试方法简明图文教程(转)
查看>>
VS2017+EF+Mysql生成实体数据模型(解决闪退的坑)
查看>>
C++多态、继承的简单分析
查看>>
库克称未来苹果用户可自己决定是否降频 网友:你是在搞笑吗?
查看>>
6倍性能差100TB容量,阿里云POLARDB咋实现?
查看>>
linux 安装 MySQLdb for python
查看>>
Sublime Text 2 技巧
查看>>
使用fscanf()函数从磁盘文件读取格式化数据
查看>>
参加婚礼
查看>>
h5 audio相关手册
查看>>
刚毕业从事java开发需要掌握的技术
查看>>
CSS Custom Properties 自定义属性
查看>>
vim
查看>>
MVVM计算器(下)
查看>>
C++中指针和引用的区别
查看>>