私は次の宣言を持っています
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のすべてのフィールドを設定するにはどうすればよいですか? または、これは不可能であり、この要件を実装する必要があります。