问题标签 [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 投票
2 回答
1416 浏览

c# - GroupBy 使用 [Flag] 枚举按单个枚举分组

假设我有

我希望能够在不考虑它是标志枚举的情况下使用GroupByList<MyClass>枚举分组。

当我使用GroupBy(问题末尾的示例)时,分组是使用这样的聚合枚举进行的

我正在寻找以下内容(使用 GroupBy 方法,因为它比使用Where3 次更高效)

我认为使用它会起作用:

0 投票
2 回答
457 浏览

c# - 限制可能的标志组合

有没有办法在枚举中组合标志但限制可能的组合?我有一个这样的枚举:

现在我还想引入一个FieldsOnly-value 但确保它仅在PropertiesOnly不存在时使用。这可能吗?

0 投票
2 回答
31 浏览

enums - 如何使用 enum t 获取多个值?

我不知道这样做的正确方法是什么。但这就是我想要的。我有一个枚举

EValue{A=1,B=2,C=4,D=8,E=16,}

我需要将数据库中的 int 值表示为 number ,

说如果选择 A,c,E

需要在数据库中说1 = 4 = 16 = 21。

没关系,但是从 21 开始我如何检索 a、c、e

提前感谢您的帮助

0 投票
2 回答
1640 浏览

c# - 将值设置为列表 c# 中的 [Flags] 枚举

我需要通过从列表中获取的项目设置枚举值。

我有枚举:

列出值:

如何使用 foreach 获得以下结果?

谢谢

0 投票
2 回答
1308 浏览

c# - 你如何测试枚举标志组合?

假设我有一个枚举标志:

我有以下函数,该参数是标志的组合,例如 DoSomething( ColorType.Blue | ColorType.Yellow )。

有没有一种简单的方法来测试所有可能的标志位组合?

谢谢

0 投票
2 回答
161 浏览

c - 如何在 C 中定义枚举标志,而不显式设置每个成员的值?

在 C 中,它的常见做法是......

但是,对于标志,您需要明确定义它们......

是否可以在不必显式列出每个值的情况下定义标志?

自从发布这个问题以来,似乎对你为什么要这样做感到有些困惑。需要明确的是,明确定义标志通常是一件“好事”,所以我的问题是关于一些相当模糊的极端情况,当你可能想避免它时。


注意:这假设标志只是“插槽”,它们从未写入磁盘或以持久方式使用,这会破坏 API 和网络协议。等等

这样做的能力可以排除一小类错误,其中......

  • 枚举标志值必须使用连续位。
  • 枚举标志位不得重叠

添加/删除位的好处是不需要更改该enum标识符之后的每个值。

诚然,这不是您一直想要使用的功能。但是在某些极端情况下它很有用。


现有解决方案(不满意)

注意到现有的(糟糕的)解决方案,这些解决方案在某种程度上有效但不满意(这就是我问这个问题的原因)

使用 2 个枚举

它有效,但与直接定义标志相比没有显着优势。


使用 GCC 的__COUNTER__

主要缺点是它只适用于 GCC,并且依赖于定义一些唯一的起始值来使用枚举......这会污染名称空间。

0 投票
5 回答
5721 浏览

c# - 如何将 int 值转换为列出 Flag 枚举的 int 值

我有这个标志枚举:

我想从 int 值获取 int 值(或复杂枚举项的 int 值列表):

你对这个问题的解决方案是什么?

0 投票
1 回答
817 浏览

c# - 用两个相等的值序列化标志枚举

我想定义一个标志枚举,如下所示:

假设我创建了一个具有Numbers属性的对象并将该属性设置为EvenNumbers. 今天,仅Two包含在属性中,但我想指定EvenNumbers以便Four将来添加时它也将包含在属性中。

但是,如果我使用 序列化这个对象XmlSerializer.Serialize,XML 会说Two因为今天这是相同的基础值。

如何强制序列化程序将此属性序列化为EvenNumbers

0 投票
1 回答
2555 浏览

c# - 结合枚举的多个标志?

我一直在尝试为 SpeechLibs Talk() 函数使用多个标志。这就是我想要做的:

但是,它给了我以下错误:

错误 1 ​​运算符“+”不能应用于“SpeechLib.SpeechVoiceSpeakFlags”和“SpeechLib.SpeechVoiceSpeakFlags”类型的操作数 c:\users\max\documents\visual studio 2013\projects\switch\switch\default_tts_screen.cs 62 51 Switch

该文档虽然明确指出这应该是可能的:

请注意,我使用的是 C#,但这不应该改变任何东西。对吧?..请帮我解决这个问题,因为它已经从几个小时以来就已经把我的头砸到了我的桌子上。我还没有在网上找到解决这个问题的方法。

0 投票
1 回答
328 浏览

model-view-controller - MVC 枚举标志:为什么第一个枚举值始终为真?

所以,我有一个标记的枚举:

问题是,无论我设置什么,“无”总是正确的......无论如何。说我这样设置:

然后尝试查看它:

在这里,Model.SiteVisibilityFlags.HasFlag(svf) 对于“无”总是正确的,而且不应该如此。在数据库中验证,值为'1'......但仍然检查无。我已经尝试了企业、属性和信息亭的单个和组合的每一种排列,复选框按预期工作,根据标志值检查和取消选中,但“无”总是选中/为真。

我错过了什么?