HasFlag 始终返回 True

2023-11-30

有没有办法检查我是否在一系列标志中获得了标志?

Example:

[Flags]
Enum TestEnum
{
  ALIVE, DEAD, ALMOSTDEAD, HURT, OTHERS

}
// check if is alive and has been hurt
TestEnum aTest = TestEnum.ALIVE | TestEnum.HURT
bool aTest2 = aTest.HasFlag(TestEnum.ALIVE)

But a.Test.HasFlag始终返回 true,即使没有 TestEnum.ALIVE


你当然可以使用枚举HasFlag就像每个人都建议的那样。但是,重要的是要确保您的枚举是 2 的幂。 2 的幂有一个位设置,因此您的枚举应如下所示:

Enum TestEnum
{
    ALIVE = 1, DEAD = 2, ALMOSTDEAD = 4, HURT = 8, OTHERS = 16
}

这很重要的原因是因为您正在比较位标志。在内存中,您的枚举标志将如下所示:

ALIVE      = 00001
DEAD       = 00010
ALMOSTDEAD = 00100
HURT       = 01000
OTHERS     = 10000

当您进行按位比较时,例如DEAD | ALMOSTDEAD,你正在这样做:

DEAD       = 00010
           OR
ALMOSTDEAD = 00100
------------------
RESULT     = 00110

因为结果 > 然后 0,所以它是真的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HasFlag 始终返回 True 的相关文章

随机推荐

  • 查找两个Python列表中常见项目的索引

    我在 python list A 和 list B 中有两个列表 我想找到它们共享的公共项 我这样做的代码如下 both for i in list A for j in list B if i j both append i 最后的com
  • 需要一些帮助来编译 jsoncpp 示例代码

    我正在尝试编译一个示例 jsoncpp 示例 但 标准 标头中显示了大量编译错误 有人在任何时候看到过这个吗 g g c json cc I usr local include json In file included from usr
  • IOS 应用程序崩溃,甚至没有输入我的代码

    最近 我的应用程序在没有输入代码的情况下开始崩溃 不确定发生了什么 我从 IOS 设备日志中获得了以下 c 信息 但我无法理解这一点 请有人帮助我找到应用程序崩溃的根本原因 当我安装临时版本时会发生这种情况 但如果我从调试安装应用程序 它工
  • 计算每行的单词数

    我正在尝试在 DataFrame 中创建一个新列 其中包含相应行的字数 我正在寻找单词的总数 而不是每个不同单词的频率 我以为会有一种简单 快速的方法来完成这个常见任务 但是在谷歌搜索并阅读了一些 SO 帖子之后 1 2 3 4 我被困住了
  • 如何运行实习生来测试使用node.js运行的dojo应用程序?

    我正在尝试使用 intern 来测试在 node js 下运行的 dojo 应用程序 我的 intern js 配置文件类似于 define loader packages name elenajs location lib name te
  • 如何获取ActionBlock的输入队列的访问权限?

    我正在传递给某个类的 Actionblock 实例 如果我打电话 cancellationSource Cancel 然后处理将停止 但有些实例可以留在ActionBlock的输入队列中 我需要访问剩余的实例才能释放一些资源 我怎样才能实现
  • functools.wraps 有什么作用?

    在对此的评论中回答另一个问题 有人说他们不确定什么functools wraps正在做 所以 我问这个问题是为了在 StackOverflow 上记录它以供将来参考 什么是functools wraps到底是做什么 当您使用装饰器时 您正在
  • 如何修复查看的 pdf 中非常小的栅格的不良插值(evince 和 chrome)

    我想为一些学术工作创建矩阵的可视化 我决定通过让图像中的像素对应于矩阵中的值来解决这个问题 我创建了如下漂亮的小 png 适当放大后 您会得到一个非常合理的图像 这是 inkscape 内的屏幕截图 然而 当我将其导出为 pdf 时 evi
  • 根据选择器选择显示自定义结账字段

    基于这个工作答案 显示或隐藏其他 Checkout 自定义字段的自定义下拉选择器 在 WooCommerce 结帐页面中 我使用下面的代码创建一些额外的自定义字段并对所有结帐字段重新排序 我使用 jQuery 脚本根据选择器选择显示 隐藏一
  • 处理选中的复选框 PHP

    我有一个从数据库中获取数据的表 如下所示 不是表单 if mysql num rows result echo table border 1 cellspacing 0 width 62 echo tr echo th width 15 T
  • 使用jquery获取div内容的值

    我有以下 html 我想获取 div 的值 即 Other 我怎样才能用 jQuery 做到这一点 div class readonly label Other div Use text 提取div的内容 var text field fu
  • 将 C# 匿名类对象公开给 COM (JavaScript)

    NET 4 5 中是否有类 API 允许将 C 匿名类的实例公开为 COM 的后期绑定对象 例如 我想这样做 webBrowser Document InvokeScript TestMethod new object new helloP
  • 需要一个字符串 JSON 验证器 [重复]

    这个问题在这里已经有答案了 我正在使用 newtonsoft 的 JSON Net 并且喜欢它的每一分钟 但是 我正在使用JObject Parse jsonString 从响应字符串中获取 JToken 如果我发送无效的 JSON 则会出
  • 文件系统观察器不工作

    I added FileSystemWatcher在 Form1 Load 中像这样 Private Sub Form1 Load ByVal sender As System Object ByVal e As System EventA
  • asp.net mvc调用下拉ajax请求

    好的 我有一个包含不同记录的记录网格 另外 我还有一个下拉列表 它应该保存我选择的值并返回到同一阶段 我也必须发送一些ID 如何实现这一目标 表单位于我的代码中提交的运动中
  • iPhone SDK 默认 NSUserDefaults

    我已经设置用户默认为 UISlider 记录一个整数 问题是 如果用户刚刚安装了该应用程序 则该整数为零或 NULL 有没有办法检测它是否 NULL 与整数 这是我到目前为止的代码 void awakeFromNib NSUserDefau
  • 如何检查字符串是否是有效的十六进制颜色表示?

    例如 AA33FF 有效的十六进制颜色 Z34FF9 无效的十六进制颜色 其中有 Z AA33FF11 无效的十六进制颜色 有额外的字符 没有透明支持 0 9A F 6 i test AABBCC 具有透明的支持 0 9A F 6 0 9a
  • 具有多个方法的接口的 Lambda 表达式

    使用 Java 8 lambda 进行测试 当我向接口添加另一个方法时 为什么会出现错误 interface Something public String doit Integer i public int getID String na
  • JPA/Hibernate 和复合键

    我遇到过一些SO讨论和其他帖子 例如here here and here 其中使用复合主键JPA被描述为如果可能的话应避免的事情 或者由于遗留数据库而必需的或具有 毛茸茸 的极端情况 由于我们正在从头开始设计一个新数据库 并且没有任何遗留问
  • HasFlag 始终返回 True

    有没有办法检查我是否在一系列标志中获得了标志 Example Flags Enum TestEnum ALIVE DEAD ALMOSTDEAD HURT OTHERS check if is alive and has been hurt