预计不会按位枚举投返回值 [英] Bitwise enum cast return value not expected

查看:157
本文介绍了预计不会按位枚举投返回值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下枚举:

[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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆