问题标签 [enum-flags]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3682 浏览

scala - Scala 等价于标志

Scala 中没有标志的等价物吗?

就像是 :

我想我可以为每个标志集做一个类并有一堆布尔值,但是语法糖呢?

0 投票
1 回答
140 浏览

java - 带有 KeyEventDispatcher 的 JFrame 无法单击 3 个箭头键

我目前正在测试KeyEventDispatcher.

因此我写了一些JFrame实现KeyEventDispatcher和我自己的 keyPressed方法keyReleased

在这些方法中,我使用基于标志的系统来检测每个箭头键的第一次按键。

如果您单独单击按键,一切正常。但是,如果您单击右、上、左(不释放其中任何一个),将无法识别左键。

控制台输出:

右键单击
4
向上单击
6

预期输出:

右击
4
上击
6
左击
7

我的代码如下:

主类:

界面类:

0 投票
1 回答
693 浏览

c# - [Flags] 枚举之间的意外行为:long 与 [Flags] 枚举:ulong

编译但不应该

错误但不应该

编译器错误文本:

-2147483648 无法转换为 ulong

问题:

我预计会发生相反的情况。谁能解释这是为什么?

另外,我如何将此标志属性打印到 abyte[]以供检查?

0 投票
2 回答
1484 浏览

c# - CA1008:枚举应该有零值和标志枚举

即使我完全知道 CA1008 警告存在的原因,我也不知道如何在以下情况下避免它。我有一个具有以下含义的标志枚举:

所以在这种情况下,0 表示 InvalidValueNonWritten 而不是 None。规则

请勿禁止来自此规则的警告,但以前发布的标志属性枚举除外。

在这种情况下,我没有发送枚举,那么我该如何防止这个警告呢?

编辑:

警告明确表示:

警告 86 CA1008:Microsoft.Design:在枚举“XXX”中,将“XXX.InvalidValueNonWritten”的名称更改为“None”。

编辑2:

枚举的更多状态:

0 投票
5 回答
439 浏览

c# - 如果我们按顺序声明 [Flags] 枚举会发生什么?

我遇到了这个问题:[Flags] Enum Attribute 在 C# 中是什么意思?

我一直想知道的一件事是,使用接受的答案的例子,如果我声明会发生什么:

该示例中的以下步骤会导致错误吗?如果没有,我怎样才能到达 MyColors.Red?

0 投票
2 回答
1066 浏览

jquery - 确定在复选框列表中选中了哪些复选框 MVC 5 (editorfor)

这可能已经在另一个线程中得到了回答,但我找不到解决方案......所以就这样吧。

我已经定义了一个带有标志的枚举:

它被模型及其各自的助手使用。

观点比较简单。我显示了船只属性的复选框列表,div当检查“其他”的复选框时,我想显示一个隐藏的东西。

我正在努力使用一个 jquery 脚本,该脚本将检测用户何时选中“其他”复选框并显示隐藏的div

想法?

0 投票
2 回答
322 浏览

c# - 为枚举标志定义值的约定是什么?

假设我有以下代码:

当标志的数量变得非常大时,这显然不是最佳的。通过优化,意味着可读,而不是快速或节省内存。

对于组合标志,例如

我们可以很容易地使用

相反,它更具可读性。
并用于组合所有标志

使用会更有利

相反,即使我们没有充分利用所有可用的 32/64 位。

但是常规值呢?

之间

或者我没有想到的其他方式,哪种方式最适合大量标志?

或者换句话说,在 C# 中设置标志值的(商定)约定是什么?

让我们假设为了论证,值不会对齐,所以代码可能看起来像这样

0 投票
1 回答
54 浏览

c# - Display Possible Flags or modify to accommodate to existing flags

I have a piece of code where I get enum flags from an API. When this API changes and updates, I might get values that are not defined in my enum structure.

Example:

When I say (TestEnum)7, I get, as a string representation when outputting said data, "Enum1|Enum2|Enum3". However, if now the API changes, and gives me an additional flag "8" that is set with (TestEnum)15, the String representation, especially in Visual Studio, will not give me the flags, it will only Display "0xF"

Is there a way to either get all the bits that are mapped properly to be displayed, or like in my example, to "forget" Enum4, the forth bit. Is there a way to do this?

0 投票
3 回答
723 浏览

c# - 在 t-sql 中解构 c# 标志

我被要求建立一个包含一堆位字段的表来切换一系列选项。这是 ac# 标志枚举将所有这些位组合到表中的单个 int“选项”字段中的理想场所。

问题是除了 c# 之外,还有一些东西需要在 sql 查询中读取和查询这些标志。我找不到任何似乎能够将 int 解构为一系列标志值的东西。我正在寻找(我认为)是将 int 转换回二进制然后选择第 n 个值并将其报告为特定选项的 bool 的东西。我可以手动执行此操作,但我担心性能下降以及“绕过您的@ss 以达到您的肘部”的效果,即试图避免使用过于复杂的解决方案的一连串位列。

0 投票
7 回答
1870 浏览

c# - 确定枚举值是否不是 C# 中的组合

编辑:

大多数人建议标志枚举应始终具有 2 次方的值。这可能是最佳实践,但我不是在这里定义枚举,而是检查它们并希望在合理范围内涵盖所有可能的场景。问题实际上是关于实现名为EnumUtilities.IsValueDefinedAndComposite<T>.

原帖:

考虑以下枚举:

以下是将Enum.IsDefined各种值转换为的结果TestWithFlags

输出:

我无法弄清楚的是如何确定枚举值是复合的。请参阅EnumUtilities.IsValueDefinedAndComposite<T>下面代码中的功能。

为方便起见,这是完整的代码。