12

可能重复:
枚举返回 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;

的值selected应该对应3(即2 + 1)

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

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

"Option_A | Option_B" --> { "Option_A", "Option_B" },

然后重组为相应的枚举,并从中获取值,但这有点混乱。有没有更直接的方法来获得这些值的总和?

4

1 回答 1

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列表。

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

于 2012-08-08T13:37:34.860 回答