如何从一个标志枚举中获取数值?

可能重复:
枚举返回int值
如何从Enum中获取数值?

这不是这些的重复,感谢读取问题MODS

假设我有一些标志枚举项被选中:

[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,并从中取值,但有点混乱。 是否有更直接的方法来获得这些值的总和?


没有太多的选择,只是做一个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列表。

如果这不是你要求的,请澄清。

链接地址: http://www.djcxy.com/p/91785.html

上一篇: How to get the numeric value from a flags enum?

下一篇: How do I convert a string to an enum value to an integer?