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

c# - 为什么许多 WPF 类将布尔值存储为枚举标志?

如果您反映 WPFSystem.Windows.Controls.Control类,您可以看到:

所以我只想知道为什么 MS 选择这种方式来存储布尔值而不是bool为每个标志使用一个字段。他们只是想为每个字段节省空间,这仅仅是他们的编码风格吗?

0 投票
1 回答
869 浏览

c# - 通用枚举标志解析器

我有一个字符串值数组,我想在 Flags Enum 对象上设置标志。我有其中几个,并且正在寻找一种更通用的方法来传递 Flags 枚举的类型,而不必为每个 Flags 枚举类型复制该方法。这是我目前拥有的:

我一直在寻找一种更通用的方式来做同样的事情,同时能够使用任何 Flags Enum 类型。

0 投票
1 回答
516 浏览

c# - 在 Java 中从 C# 转换标志

我正在将部分代码从C#程序转换为Java,其中定义了一个[Flag] 枚举,如下所示:

并在运行时进行掩码操作,例如

在我的java代码中,我复制了没有枚举的同一个类:

但是当我做了同样的操作时

那么结果就不一样了!!我如何在java中复制相同的操作?你能帮助我吗?

0 投票
2 回答
3662 浏览

c# - Enum HasFlag函数实现的内部逻辑是什么

有人可以帮我理解枚举类的 HasFlag 方法的内部逻辑吗?让我先解释一下我的要求。我已经创建了一个带有标志属性的枚举,然后使用 HasFlag() 函数从位标志值中获取选定的组合。但在这里我的要求是不同的。我的数据库中有一个表,其中列出了不同的枚举值。结构如下。

假设我有另一个表,它存储 EnumTypeID 1 的最终标志组合。因此,假设该表列保存不同的组合,例如

==================================================== ===========

现在我如何以编程方式(在 C# .net4.5 中)实现这一点。我需要首先查询第一个表并获取特定 EnumTypeID 的枚举列表。现在我需要从第二个表中获取所选标志的值(假设值为 5)。那我怎么能说基本上 enum1 & enum3 是通过代码选择的呢?

0 投票
1 回答
2069 浏览

qtablewidget - 如何使用可编辑项和不可编辑项填充 Qtablewidget

每一个身体

我在使用第一行的可编辑项目填充 Qtablewidget 时遇到问题,然后

其余行的不可编辑项目她是我迄今为止的实现

0 投票
1 回答
2729 浏览

c# - 测试 Flags Enum 中只设置了一个位

所以我有一个标志枚举

我如何测试那一位,并且只设置一位?

我之前已经 100% 做到过,但我的脑子现在不行了!

0 投票
4 回答
8188 浏览

c# - 将一些布尔属性转换为标志枚举

我需要将具有 3 个布尔属性的遗留类转换为标志枚举。

我知道这些属性中至少有一个是正确的。

考虑到我可能会遇到需要设置更多属性和标志的情况,是否有更优雅或更简洁的方法来执行此操作?

0 投票
1 回答
1709 浏览

c# - 解析多个枚举值(标记):从查询字符串中读取过滤器类型

我计划制作一个页面,以表格的形式显示有关用户的信息。每列将是表的一个属性。我希望查看表格的人能够选择过滤用户的方式。将有两个复选框:1 个用于报告的用户,1 个用于创建日期。我打算像这样创建一个名为 UserFilter 的枚举:

如果我需要添加另一种类型,它的值将设置为 4,以便我可以通过按位或(3 将是 1 和 2)来判断选择了哪些枚举。我遇到的问题是从查询字符串中读取枚举。我想我可以做一些事情,比如用一个 int 发回(0 表示无,1 表示日期,2 表示报告,3 表示两者),但我想尝试用实际字符串发回。我不确定如何将“日期|报告”解析为 UserFilter 中不存在的枚举值。

简而言之:有没有一种干净的方法可以将“日期|报告”解析为值 3,而不向我的枚举添加另一个值?

0 投票
1 回答
380 浏览

c# - 为什么 MSDN 声明 HasFlag 是*设计*与 FlagsAttribute 一起使用的?

问题[Flags] 枚举属性在 C# 中是什么意思? 不问我在问什么也不回答。如果该问题有这样的答案,请在评论中说明是哪一个(链接),而不是盲目和错误地标记为重复。


MSDN 的HasFlag文档中有此注释:

HasFlag 方法设计为与使用 FlagsAttribute 属性标记的枚举类型一起使用,并可用于确定是否设置了多个位字段。对于未使用 FlagsAttribute 特性标记的枚举类型,请调用 Equals 方法或 CompareTo 方法。

但是我已经对其进行了测试,尽管枚举被标记或没有标记,但该方法运行良好FlagsAttribute

也许文档上的注释只是试图通过使用属性来强制执行某种*好的做法*(最终根本无关紧要)?


我在这里看了一眼,确实似乎对枚举没有任何限制(它只是一个简单的按位与):

那么,到底为什么它说它*设计*与 FlagsAttribute 一起使用,而实际上它并不依赖它?

0 投票
2 回答
346 浏览

php - 存储状态标志的最佳方式

为以下场景寻找存储标志的最佳方式。

我的应用程序必须在特定的时间间隔内向用户发送一定数量的通知或提醒。我打算编写一个批处理作业来完成它。为了避免重新发送提醒,我想要一些标志。

示例:在用户登录应用程序的第 2、第 5 和第 10 天发送提醒。

提醒的数量将来可能会增加或减少。我想知道存储标志的最佳方法是什么 - 将其存储为 INT 并使用二进制等效项用于内部表示或每个间隔使用一列(如第二天使用一个 TINYINT(1) 是否更好,一个为第五个,依此类推...)

存储空间不是限制,我只是在寻找整个行业的最佳实践。