问题标签 [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 回答
2796 浏览

c# - 将 [Flags] 枚举序列化为字符串

有没有办法指定类中的 [Flags] 枚举字段应序列化为字符串表示形式(例如“Sunday,Tuesday”)而不是整数值(例如 5)?

更具体地说,当在 Web 服务中返回以下 SomeClass 类型时,我想要一个名为“Days”的字符串字段,但我得到一个数字字段。

0 投票
10 回答
5116 浏览

c# - 找到标志枚举长度的有效方法?

考虑一下:

目前,我这样做如下:

但我希望有一种更有效的方法来查找长度,可能基于位集操作。

如果可能,请解释您的解决方案为何以及如何工作。

另外,如果这是重复的,请指出它,我会删除这个问题。我能够找到的关于 SO 的唯一类似问题是关于查找所有可能的Colors枚举组合的长度,而不是myColors变量的长度。

更新:我仔细地对每个解决方案进行了基准测试(每个解决方案 1 000 000 次迭代),结果如下:

  1. Stevo3000 - 8ms
  2. 马特埃文斯 - 10 毫秒
  3. 丝滑 - 34 毫秒
  4. 卢克 - 1757 毫秒
  5. 古法 - 4226ms
  6. Tomas Levesque - 32810 毫秒

Stevo3000 无疑是赢家(Matt Evans 获得银牌)。

非常感谢您的帮助。

更新 2:此解决方案运行得更快:100 000 000 次迭代需要 41 毫秒(大约比 Stevo3000 快 40 倍(32 位操作系统))

0 投票
18 回答
198359 浏览

c# - 如何检查是否设置了标志组合的任何标志?

假设我有这个枚举:

要检查例如AB是否已设置,我可以这样做:

是否有比以下更简单的方法来检查是否设置了组合标志常量的任何标志?

例如可以&用一些东西交换吗?

0 投票
11 回答
12591 浏览

c# - 为什么使用标志+位掩码而不是一系列布尔值?

考虑到我有一个对象可能处于一个或多个真/假状态的情况下,我一直对为什么程序员经常使用标志+位掩码而不是仅仅使用几个布尔值有点模糊。

它遍布 .NET 框架。不确定这是否是最好的示例,但 .NET 框架具有以下内容:

因此,给定锚样式,我们可以使用位掩码来确定选择了哪些状态。但是,您似乎可以使用 AnchorStyle 类/结构来完成相同的事情,该类/结构为每个可能的值定义了 bool 属性,或者单个枚举值的数组。

当然,我提出问题的主要原因是我想知道是否应该使用自己的代码遵循类似的做法。

那么,为什么要使用这种方法呢?

  • 内存消耗少?(它似乎不会消耗少于一个数组/布尔结构)
  • 比结构或数组更好的堆栈/堆性能?
  • 更快的比较操作?更快的增值/去除?
  • 对编写它的开发人员更方便?
0 投票
4 回答
7353 浏览

c++ - 使用二进制标志来表示状态、选项等

如果我想使用二进制“标志”来表示状态或选项或类似的东西,以便我可以传递它们并将它们存储到一个对象OPTION1 | OPTION2,比如OPTION10001 和OPTION20010,这样传递的就是 0011,代表选项的混合.

我将如何在 C++ 中做到这一点?我在想类似的东西

但理想情况下,doSomething知道如何解释给定的选项。

我在正确的轨道上吗?有没有更好的办法?

更新

而且我不是必须Option为每个可能的组合定义一个吗?

0 投票
2 回答
1738 浏览

.net - flagsattribute - 负值?

我有一个带有标志属性的枚举,我用它来表示权限。我用它来比较if (CurrentPermissions & Permission1 == Permission1)等等...

但是,我们达到了最大限制。一旦我用完枚举值,我可以使用负值,如 -1、-2、-4 等吗?

0 投票
7 回答
11302 浏览

.net - 如何在 Linq to Entities 查询中使用标志枚举?

我有一个像这样的 [Flags] 枚举:

状态枚举可能包含两个值,例如:

现在我需要创建一个 linq 查询(LINQ to ADO.NET Entities)并询问状态为 s 以上的记录,即 Active 或 Unknown;

当然我得到一个错误,因为 LINQ to Entities 只知道在 Where 子句中处理原始类型。

错误是:

无法创建“闭包类型”类型的常量值。此上下文仅支持原始类型(“例如 Int32、String 和 Guid”)。

有没有可行的方法?我可能有一个包含 10 个可能值的状态枚举并查询其中的 5 个状态。如何以优雅的方式使用 Flags 枚举构造查询?

谢谢。

更新

这似乎是一个 Linq to Entity 问题。我认为在 LINQ to SQL 中它可以工作(不确定,没有测试)。

0 投票
1 回答
418 浏览

ruby-on-rails - 如何使 Rails ActiveRecord 依赖于属性?

我为客户创建了一个 ActiveRecord,现在他们想要它,所以当它被销毁时,它实际上会保留下来以供手动回滚。

我想做的是创建一个名为“活动”的布尔属性,它默认为 1。当记录被销毁时,该属性切换为 0。

我知道我可以将所有查询更改为具有 active=1 的额外条件,或者使用范围,甚至使用类型列和继承(这是我正在做的以尽快完成它)。

有什么方法可以告诉 ActiveRecord 表中的记录实际上是仅当属性为某个值(在本例中为 active=1)时的记录,如果是其他任何值,则完全忽略它?

谢谢,安德鲁

0 投票
3 回答
1284 浏览

c# - 将枚举映射到 [Flags] 枚举

我有一个枚举,假设:

我有一个基于过滤器返回这些电视列表的方法。过滤器由 Enum 表示:

问题:检查给定 ItemStatus 实例是否与给定 ItemStatusFilter 实例匹配的巧妙方法是什么?

我不喜欢将值分配给 ItemStatus 成员 (1,2) 的想法,因为该枚举不需要它。现在我的代码如下所示:

这些方面的东西呢?

目标是减少代码量,减少类型之间的耦合。

是不是感觉enum TagStatusFilter这里被滥用了?

0 投票
3 回答
3852 浏览

linux - 标头中存在 TCP 标志

在我的 ubuntu 9.04 上,/usr/include/netinet/tcp.h 定义了 tcp 标头,如下所示

在标志部分,定义了 FIN、SYN、RST、PSH、ACK、URG 值,而我找不到 ECE 和 CWR 标志。struct tcphdr 中定义的 res1、res2 和 doff 值是什么意思?是否也可以访问 ECE 和 CWR 标志值?

谢谢。