我正在尝试检查“枚举实例”是否包含多个标志。
此外,我真的不想使用以下类似内容:
[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
请注意,我不关心"instance"包含哪些标志,我只想知道是否存在多个实例。
&
运算符或HasFlag
方法。 - Pavel Anikhouskibool value = (multiState & (multiState -1)) != 0;
注:该段代码用于判断变量 multiState 的二进制表示中是否有多个比特位同时被设置为1。如果是,则返回 true,否则返回 false。 - Trevor