可能重复:
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" },
然后重新组合成相应的Enum,并从中获取值,但它有点乱。是否有更直接的方法来获得这些值的总和?
答案 0 :(得分:3)
没有太多选择,只需制作一个if
List<int> composedValues = new ....
if((selected & Option_A) == Options.Option_A)
composedValues.Add((int)Options.Option_A);
else if((selected & Option_B) == Options.Option_B)
composedValues.Add((int)Options.Option_B);
else if(...)
最后,您将获得composedValues
列表中结果的所有组成值的列表。
如果这不是您所要求的,请澄清。