一、枚举的定义
枚举是一组命名整型常量。枚举类型是使用enum关键字声明的。
C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。
二、枚举的声明
声明枚举的一般语法:
1
2
3
4
|
enum <enum_name> { enumeration list }; |
其中,
-
enum_name
指定枚举的类型名称。 -
enumeration list
是一个用逗号分隔的标识符列表。
枚举列表中的每个符号代表一个整数值,一个比它前面的符号大的整数值。默认情况下,第一个枚举符号的值是 0.例如:
1
|
enum Day { Sun, Mon, tue, Wed, thu, Fri, Sat }; |
在编译枚举类型时,会把每个符号转换成类型的一个常量字段很一个int32的公共实例字段,不够后者不能通过代码调用。
因为枚举的符号是一个常量字段,如果在不同的程序集引用,可能会出现一些版本问题,
每个枚举都有一个基础类型, 包含 byte
,sbyte
,short
,ushort
,uint
,long
,ulong
, 和int
(最常用,C#默认的类型)
三、枚举的转换
枚举转换成整数
1
2
|
Day today = Day.Wed; int dayNumber = ( int )today; |
枚举转换成字符串
1
2
|
Day today = Day.Wed; string todayStr = today.ToString(); |
四、枚举的方法
枚举的主要三个方法:Enum.GetName()
、Enum.GetNames()
、Enum.GetValues()
1
2
3
4
|
Day today = Day.Wed; string name = Enum.GetName(typeof(Day), 3 ); Enum.GetNames(typeof(Day)) Enum.GetValues(typeof(Day)) |
GetName
:获取单个枚举的名称
GetNames
:获取所有枚举的名称
GetValues
:获取所有枚举的值
五、标志枚举(二进制枚举)
定义枚举时,添加Flags特性,之后便可以对这些值执行AND、OR、NOT、XOR按位运算
1
2
3
4
5
6
7
8
9
10
|
public enum MyEnum { MyEnum1 = 1 , //0x1 MyEnum2 = 1 << 1 , //0x2 MyEnum3 = 1 << 2 , //0x4 MyEnum4 = 1 << 3 , //0x8 MyEnum5 = 1 << 4 , //0x10 MyEnum6 = 1 << 5 , //0x20 MyEnum7 = 1 << 6 //0x40 } |
此时可以使用位移运算方便的获取多个枚举的组合变量:
1
2
|
MyEnum myEnum = MyEnum.MyEnum1 | MyEnum.MyEnum2; myEnum |= myEnum | MyEnum.MyEnum3; |
或在组合中删除其中一项枚举:
1
2
|
myEnum ^= MyEnum.MyEnum1; myEnum &= ~MyEnum.MyEnum2; |
需要判断是否包含某一枚举值时,可以使用以下方法判断:
1
|
(curMyEnum & MyEnum.Enum1) > 0 |
并集 &交集 ^差集
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注服务器之家的更多内容!
原文链接:https://www.cnblogs.com/xuwendong/p/10369597.html