基于位值启用行为

Den*_*ail 0 c# algorithm

我有一系列基于位值启用/禁用的行为.例如,行为"A"的状态为0或1,行为"B"为0或2,行为"C"为0或4等.如果包含状态的变量值为"5",则I知道行为"​​A"和"C"已启用."B"不是.我的程序应该在A&C上切换.

我不确定这叫什么,所以希望有人能给我一个名字,并把我推向正确的方向.如何基于状态变量以编程方式创建启用的功能列表?我想以这种方式控制20-30个行为.手动管理太多.

Meh*_*ari 7

您可以使用BitVector32BitArray.他们从你那里抽象出位操纵.

如果要直接操作int变量中的各个位,可以使用按位运算符:

检查第i位是否设置:

bool isSet = (variable & (1 << i)) != 0;
Run Code Online (Sandbox Code Playgroud)

设置第i位:

variable |= (1 << i);
Run Code Online (Sandbox Code Playgroud)

重置第i位:

variable &= ~(1 << i);
Run Code Online (Sandbox Code Playgroud)

切换第i位:

variable ^= (1 << i);
Run Code Online (Sandbox Code Playgroud)