gpt4 book ai didi

c# - 按位枚举强制转换返回值不是预期的

转载 作者:太空宇宙 更新时间:2023-11-03 17:11:47 25 4
gpt4 key购买 nike

我有以下枚举:

[Flags]
public enum PermissionLevel {
User = 1,
Administrator = 2,
ITStaff = 3,
Manager = 4,
SuperAdministrator = 6,
}

当我这样做时:

PermissionLevel permission = (PermissionLevel) dr.GetInt32(i);

我得到分配给权限对象的随机权限值。例如,如果 i 是 6,我的权限对象返回“Administrator | Manager”,我应该获得“SuperAdministrator”。当我将实例转换回整数时,它返回 6。

我错过了什么吗?

最佳答案

您需要确保每个值的组合都是唯一的:

[Flags]
public enum PermissionLevel {
User = 1,
Administrator = 2,
ITStaff = 4,
Manager = 8,
SuperAdministrator = 16
}

正如您的枚举目前看起来的那样,6 可以表示 SuperAdministratorAdministrator |经理。 4 可以是 ManagerUser | ITStaff

关于c# - 按位枚举强制转换返回值不是预期的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1596735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com