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

Dav*_*Dev 7 c# enums enum-flags

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

这不是这些的重复,感谢阅读问题模式

假设我选择了许多标志枚举项:

[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;
Run Code Online (Sandbox Code Playgroud)

selected应该对应于3(即2 + 1)

我怎样才能把它变成一个int?

我已经看到了selected将ToString()和split()转换为每个选项的示例,例如

"Option_A | Option_B" --> { "Option_A", "Option_B" },
Run Code Online (Sandbox Code Playgroud)

然后重新组合成各自的Enum,并从中获取值,但它有点凌乱.是否有更直接的方法来获得这些值的总和?

Tig*_*ran 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(...)
Run Code Online (Sandbox Code Playgroud)

最后,您将获得列表中结果的所有成分值的列表composedValues

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