假设我们有以下Enum of Flags:
[Flags]
public enum Animals
{
Cow = 1,
Duck = 2,
Goose = 4
}
Run Code Online (Sandbox Code Playgroud)
现在,给定此枚举,我们想要指定一个以int作为输入的函数,并且给定此数字,我们想要返回一个包含此数字包含的动物的数组.
例如,如果我们收到数字7作为输入,我们知道我们有一只牛,一只鸭子和一只鹅,因为4 + 2 + 1 = 7.
对于此枚举中出现的任何数量的动物,我们如何确定该数字中包含哪些动物?
public static IEnumerable<Animals> GetAnimals(int i)
{
var animals = (Animals) i;
foreach (Enum value in Enum.GetValues(animals.GetType()))
if (animals.HasFlag(value))
yield return (Animals) value;
}
Run Code Online (Sandbox Code Playgroud)
小提琴:https://dotnetfiddle.net/yydUE2
| 归档时间: |
|
| 查看次数: |
131 次 |
| 最近记录: |