C#枚举
C#枚举是一种特殊的值类型,它可以用来定义一组常量,它们可以是整数值或字符串。枚举可以让你把可能出现的值分组,使代码更加清晰,可读性更高。
C#枚举的定义方式如下:
enum 枚举名称
{
枚举项1,
枚举项2,
枚举项3,
...
}
例如:
enum Color
{
Red,
Green,
Blue
}
枚举中的每个枚举项都有一个默认的整数值,从0开始,依次加1,比如上面的Color枚举,Red的值为0,Green的值为1,Blue的值为2。我们也可以自己设置枚举项的值:
enum Color
{
Red = 10,
Green = 20,
Blue = 30
}
枚举项的值可以是整数,也可以是字符串:
enum Color
{
Red = "红色",
Green = "绿色",
Blue = "蓝色"
}
我们可以通过枚举名称和枚举项名称来获取枚举项的值:
// 获取枚举项Red的值 int redValue = (int)Color.Red; // 获取枚举项Green的值 int greenValue = (int)Color.Green; // 获取枚举项Blue的值 int blueValue = (int)Color.Blue;
C#位枚举
C#位枚举是C#枚举的一种特殊形式,它可以用来表示多个值的组合,比如一个人可以同时具有多种角色,如管理员、普通用户、VIP用户等。
C#位枚举的定义方式如下:
[Flags]
enum 枚举名称
{
枚举项1 = 1,
枚举项2 = 2,
枚举项3 = 4,
...
}
例如:
[Flags]
enum Role
{
Admin = 1,
User = 2,
VIP = 4
}
位枚举中的枚举项的值应该是2的N次方,比如上面的Role枚举,Admin的值为1,User的值为2,VIP的值为4,表示每个角色都有一个独立的值,可以用来表示一个人同时拥有多个角色。
我们可以使用位运算符来判断一个人是否拥有某个角色:
// 假设userRole的值为6,表示拥有User和VIP两个角色 int userRole = 6; // 判断userRole是否拥有Admin角色 bool hasAdmin = (userRole & (int)Role.Admin) == (int)Role.Admin; // 判断userRole是否拥有User角色 bool hasUser = (userRole & (int)Role.User) == (int)Role.User; // 判断userRole是否拥有VIP角色 bool hasVIP = (userRole & (int)Role.VIP) == (int)Role.VIP;
位枚举还可以用来表示一组标志位,比如一个文件的权限,可以读、可以写、可以执行等:
[Flags]
enum FilePermission
{
Read = 1,
Write = 2,
Execute = 4
}
// 假设filePermission的值为7,表示可读、可写、可执行
int filePermission = 7;
// 判断filePermission是否可读
bool canRead = (filePermission & (int)FilePermission.Read) == (int)FilePermission.Read;
// 判断filePermission是否可写
bool canWrite = (filePermission & (int)FilePermission.Write) == (int)FilePermission.Write;
// 判断filePermission是否可执行
bool canExecute = (filePermission & (int)FilePermission.Execute) == (int)FilePermission.Execute;