假设我们有以下Enum of Flags:
[Flags]
public enum Animals
{
Cow = 1,
Duck = 2,
Goose = 4
}
现在,给定该枚举,我们想指定一个带有int作为输入的函数,并给定这个数字,我们要返回一个包含该数字包含的动物的数组。
例如,如果我们收到数字7,那么我们知道我们有一头母牛,一头鸭子和一只鹅,因为4 + 2 + 1 = 7。
对于此枚举中显示的任何数量的动物,我们如何确定该数量中包含哪些动物?
最佳答案
通用版本-不太快,可能会改进...
void Main()
{
var flags = Ext.GetFlags<Animal>(7);
flags.Dump();
}
public static class Ext
{
public static IEnumerable<T> GetFlags<T>(int flags)
where T : struct
{
return typeof(T).GetEnumValues().Cast<T>()
.Where(a => ((dynamic)(T)(object)flags).HasFlag(a)).ToList();
}
}
[Flags]
public enum Animal
{
Cow =1,
Duck = 2,
Goose = 4,
Dog = 8
}
关于c# - C#枚举-给出Int输入的猜测标志,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29917331/