【发布时间】:2012-08-05 15:06:07
【问题描述】:
可能重复:
Enums returning int value
How to get the numeric value from the Enum?
这不是其中任何一个的重复,感谢阅读问题模式
假设我选择了一些我的标志枚举项:
[Flags]
public enum Options
{
None = 0,
Option_A = 1,
Option_B = 2,
Option_C = 4,
Option_D = 8,
}
Options selected = Options.Option_A | Options.Option_B;
selected的值应该对应3(即2+1)
我怎样才能把它变成一个 int?
我已经看到将 selected 转换为 ToString() 然后将 split() 转换为每个选项的示例,例如
"Option_A | Option_B" --> { "Option_A", "Option_B" },
然后重组为相应的枚举,并从中获取值,但这有点混乱。有没有更直接的方法来获得这些值的总和?
【问题讨论】:
-
int i = (int)myFlags;然后MyFlags myFlags = (MyFlags)i。按您的要求工作。 -
在我发布这篇文章并喝杯咖啡的 8 分钟内,我发现它已经被回答、删除、评论和重新回答,然后我什至有机会思考什么是继续。 cmets 或答案或 cmets 都没有解决我试图获取所有选定标志的整数和的事实,不是单个选定的枚举项。我什至在问题“Option_A | Option_B”中指定了但似乎被忽略了,因为尝试建议的答案会导致编译器错误:“无法将 System.Enum 转换为 int”。感谢您关闭它。
-
@DaveDev 如果你有
Enum selected = Options.Option_A | Options.Option_B;,然后尝试转换为int,这就是你得到的错误,但你的问题有Options selected = ...; -
'因为没有看到已删除的 cmets/answers,我会回答
var selectedAsInt = (int)selected;。
标签: c# enums enum-flags