Raú*_*Roa 1 c# enums bit-manipulation
我有以下枚举:
[Flags]
public enum PermissionLevel {
User = 1,
Administrator = 2,
ITStaff = 3,
Manager = 4,
SuperAdministrator = 6,
}
Run Code Online (Sandbox Code Playgroud)
当我做:
PermissionLevel permission = (PermissionLevel) dr.GetInt32(i);
Run Code Online (Sandbox Code Playgroud)
我获得分配给权限对象的随机权限值.例如,如果我是6,我的权限对象返回"管理员|经理",我应该得到"超级管理员".当我将实例强制转换为整数时,它返回6.
我错过了什么吗?
Fre*_*örk 11
您需要确保每个值组合都是唯一的:
[Flags]
public enum PermissionLevel {
User = 1,
Administrator = 2,
ITStaff = 4,
Manager = 8,
SuperAdministrator = 16
}
Run Code Online (Sandbox Code Playgroud)
正如你的枚举目前所看,6可以表示SuperAdministrator或者Administrator | Manager.4可以是Manager或User | ITStaff等等.