我有一个这样定义的枚举:
[Flags]
public enum Orientation
{
North = 1,
North_East = 2,
East = 4,
South_East = 8,
South = 16,
South_West = 32,
West = 64,
North_West = 128
}
有没有一种通用的方法来判断是否设置了一个标志,多个标志还是没有标志?
我不在乎枚举的值是什么,我只想知道
多少标志已设置。
这不是计算位数的重复项。如果我像这样初始化枚举并计算位数,我会得到 10。但是设置标志的数量将是 8。
GeographicOrientation go = (GeographicOrientation) 1023;
您可以使用此代码:
var item = Orientation.North | Orientation.South;
int i = 0;
foreach (Orientation e in Enum.GetValues(typeof(Orientation)))
if(item.HasFlag(e))
i++;
Console.WriteLine(i);
我是一名优秀的程序员,十分优秀!