我有以下声明
private uint mask;
Action<FlagEnum> setField = new Action<FlagEnum>(x => this.mask = (uint)x);
例如以下枚举:
[Flags]
public enum FlagEnum : uint
{
Clear = 0x0,
F1 = 0x1,
F2 = F1 << 1,
F3 = F2 << 1,
F4 = F3 << 1,
F5 = F4 << 1,
F6 = F5 << 1
}
现在我想设置除“清除”标志之外的所有标志。我试过这个:
setField(!FlagEnum.Clear);
但我收到以下消息
Operator '!' cannot be applied to perand of type 'BitMask.FlagEnum'
设置一个标志,例如:
setField(FlagEnum.F1)
工作正常。
所以问题是如何用我的方法设置 FlagEnum 的所有字段而不是“清除”字段?或者这是不可能的,我必须实现这个要求。