预计不会按位枚举投返回值 [英] Bitwise enum cast return value not expected
本文介绍了预计不会按位枚举投返回值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下枚举:
[Flags]
public enum PermissionLevel {
User = 1,
Administrator = 2,
ITStaff = 3,
Manager = 4,
SuperAdministrator = 6,
}
当我做的:
PermissionLevel permission = (PermissionLevel) dr.GetInt32(i);
我得到分配给权限对象随机许可值。例如,如果我 6,我的权限对象返回管理员|管理器,我应该得到超级管理员。当我投实例回到整数返回6。
I get random permission values assigned to the permission object. For instance, if i is 6, my permission object returns "Administrator | Manager" and I'm supposed to get "SuperAdministrator". When I cast the instance back to integer it returns 6.
我缺少的东西吗?
推荐答案
您需要确保该值的每个组合都是唯一的:
You need to make sure that each combination of values is unique:
[Flags]
public enum PermissionLevel {
User = 1,
Administrator = 2,
ITStaff = 4,
Manager = 8,
SuperAdministrator = 16
}
由于您的枚举当前看,6可能意味超级管理员
或管理员|经理
。 4可以是管理
或用户| ITStaff
等。
这篇关于预计不会按位枚举投返回值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文