gpt4 book ai didi

c# - 有没有办法判断一个枚举是否只有一个、多个或没有设置标志?

转载 作者:太空宇宙 更新时间:2023-11-03 17:39:10 24 4
gpt4 key购买 nike

我有一个这样定义的枚举:

[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);

关于c# - 有没有办法判断一个枚举是否只有一个、多个或没有设置标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37795505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com