【发布时间】:2020-08-01 15:08:15
【问题描述】:
考虑以下枚举:
enum Color
{
None = 0,
Yellow = 1,
Green = 2,
Blue = 4
}
var enumType = typeof(Color);
var number = (int)(Color.Yellow | Color.Green);
// number equals to 3
现在我想要上述操作的逆向操作。我想知道什么枚举导致数字 3。比如:
string[] names = GetEnumNames(enumType, 3);
// It should return an array { "Yellow", "Green" }
我尝试过Enum.ToObject,我知道它会返回带有"Yellow" 和"Green" 的枚举。但是我怎样才能得到名字列表呢?
注意:顺便提一下,我只知道 Enum 在运行时的类型。
【问题讨论】:
-
Yellow和Green与3的连接如何?? -
Enum.GetNames 可以帮到你
-
@ClaudioRedi 3 是代表“黄色”和“绿色”按位运算的整数,例如:
var number = (int)(Color.Yellow | Color.Green),number是3。 -
@PhilRoss 我最终使用了指向您发送的答案的链接。