【发布时间】:2020-02-29 14:44:06
【问题描述】:
我正在尝试检查“枚举实例”是否包含多个标志。
[Flags]
public enum Foo
{
Bar = 1,
Far = 2
}
var multiState = Foo.Bar | Foo.Far;
MoreThanOneFlag(multiState); // True
var singleState = Foo.Bar;
MoreThanOneFlag(singleState); // False
此外,我真的不想使用以下内容:
var state = Foo.Bar | Foo.Far;
Console.WriteLine(state.ToString().Count(x => x == ',') > 0); // True
注意,我不关心“实例”包含哪些标志,我只想知道是否有多个。
【问题讨论】:
-
可能有很多重复,比如this你可以使用
&操作符或者HasFlag方法 -
执行位操作...
bool value = (multiState & (multiState -1)) != 0; -
@Çöđěxěŕ 这实际上正是我正在寻找的。可悲的是,我刚刚注意到我本可以搜索设置位,真可惜。
-
@Çöđěxěŕ 这应该是答案而不是评论。
标签: c# enums enum-flags