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

c++ - QFlags 和 QVariant

我想要做的是简单地将 a 存储QFlags在 a 中QVariant

标志定义:

现在我所做的就是使用该QVariant::fromValue函数构造一个 qvariant:

调试输出显示:

那么,无论出于何种原因,QVariant 似乎无法存储标志?它确实识别类型,但似乎无法存储该值。我错过了什么?如果我注册一个枚举,一切正常。

注意:我知道我可以通过将值转换为整数并返回来存储值,但这对我来说是不可能的,因为 QVariant 创建是泛型方法的一部分。

0 投票
2 回答
1375 浏览

c# - 确定枚举标志组合中包含的标志数量的最佳实践?

在某些情况下,当我将 Enum 传递给一个方法时,我需要处理它是单个 Enum 值,还是一个标志组合,为此我编写了这个简单的扩展:

VB.Net:

C#(在线翻译):

示例用法:

VB.Net:

C#(在线翻译):

我只想问是否存在一种更直接和有效的方式,我目前正在做的事情是避免将标志组合表示为字符串然后拆分它。

0 投票
1 回答
2492 浏览

wpf - 如何在xaml中绑定列表框的多个选定项

我有绑定到列表框项目源中的标志枚举值。我用过SelectionMode多个。我想将列表框的所有选定项目分配给一个标志 Enum 属性。如何绑定选定的项目?

这里的weekdays是Weekdays类型的Flags-Enum。我想将列表框的所有选定项目绑定到Weekdays。

0 投票
3 回答
69 浏览

c# - 我想知道是否或如何使用标志枚举并在另一个类中返回枚举参数

我有一个用于输入验证的标志枚举列表,我想返回其中一个枚举作为验证的一部分。到目前为止,这就是我想出的……
这些是我的枚举。

这是我在使用枚举时显示消息的开关

这是我的问题所在,我想验证输入并返回枚举,以便它可以与我的开关一起运行并显示那里的消息

我实际上最终放弃了这个想法并使用了“错误报告”。我不能完全让这种方法为我工作。肯定是因为我不知道怎么做。有一天,我希望能解决我遇到的问题。

0 投票
6 回答
1318 浏览

c# - 有没有办法判断枚举是否设置了一个、多个或没有设置标志?

我有一个这样定义的枚举:

有没有一种通用的方法来判断是否设置了一个标志,多个或没有?我不在乎枚举的值是多少,我只想知道设置了多少个标志。

这不是用于计算位数的重复项。如果我像这样初始化枚举并计算位数,我得到 10。但设置标志的数量为 8。

0 投票
2 回答
495 浏览

c# - 十进制值/名称的枚举标志转换

我很少有代表外部系统版本的枚举标志。我想确保每次外部系统升级它的版本时,我的功能应该能够支持它(我会提前知道版本会升级,所以它是一个主动行动)。此外,我的通信必须与该系统双向进行,这意味着内部和外部通信可以有不同的版本集。

我创建了一个枚举标志来表示这些版本。

这适用于正式的重大升级。遗憾的是,我不能将它们命名为 System1.0 等。此外,作为它的小数,我不能使用通用枚举解析器。

当然,我仍然可以通过使用switch/if 语句来实现上述目的,但我真的想完全避免任何硬编码(如果可以的话,甚至是资源/内容),因为外部系统的一个版本可能会被完全丢弃,而我不想为不得不追逐所有字符串而烦恼。

我还需要标志或等效功能,因为我可能仍会收到没有系统版本标识的通信,默认情况下适用于所有版本。另一种通信可能只适用于某些选择的版本,例如。仅适用于 2.0 以后等。

请注意,我可以通过使用 Switch/If 轻松实现这一点,但我不希望有任何硬编码,除非没有其他(简单)方法。我在这里主要关心的是具有类似于标志的功能,但可以轻松识别带小数位的值,例如 1.0 或 1.2 或 1.3.1 (尽管在历史上它们从未有双小数点),并提供编译时间故障。我对其他机制的建议持开放态度,但我真的更希望它是一个简单的逻辑,因为它是整个过程中非常微不足道的一部分。

0 投票
2 回答
438 浏览

c# - 使用 Flags 枚举时如何减少 ASP.NET MVC 视图中的代码重复

原谅我的无知。没有做很多 MVC 工作,我确信一定有更好的方法来做到这一点,但我似乎找不到它。我有一个这样的标志枚举:

我的模型上的 SelectedServices 属性具有此类型的值。在视图中,我为每个可能的服务设置了一个复选框。我已经像这样实现了绑定逻辑:

等等。哪个有效,但确实非常混乱。

肯定有更好的方法来封装这个 - 但我不知道 MVC 中的相关概念是什么?

0 投票
2 回答
470 浏览

c# - 有没有办法在 c# 中将字符串列表转换为枚举标志?

我在 xml 文档中有一个字符串列表:

我有一个枚举:

有没有办法将 XML 字符串转换为7or的枚举标志值0111

有无数的资源可以反过来做这个,但是我很难找到任何关于从字符串转换为标志的信息。

0 投票
1 回答
235 浏览

c# - System.Reflection.TypeAttributes 是带有 FlagsAttribute 的病态枚举类型吗?

枚举类型System.Reflection.TypeAttributes看起来相当病态。它带有[Flags]属性并且有不少于四个常数零的同义词。从 Visual-Studio 生成的“元数据”:

为什么有人会在带有 ? 的枚举类型中使用四个名称作为零FlagsAttribute?看起来真的很疯狂。

看看后果:

x在这里,类型的零值 的字符串表示形式变为"NotPublic"。而非零的字符串表示y变为"AutoLayout, AnsiClass, Class, BeforeFieldInit". 关于y,请注意它只有一个位集 ( 1<<20),仅名称BeforeFieldInit就完全解释了该位。所有其他三个名称AutoLayout, AnsiClass, Class,对值的贡献为零。

到底是怎么回事?

为什么要这样设计?

0 投票
3 回答
1357 浏览

c# - 如何在 C# 中将字符串转换为标志枚举格式

我有这个枚举:

我收到这样的输入字符串:

如何将它(在 C# 中)转换回: