私はコメントするつもりでしたが、GrahamS が言ったことは、要点を詳しく説明するのに十分なほど重要でした。
フラグは通常、特に倍数を設定できるようにしたい場合に使用されます。これは私たちのタスク列挙型の例です
namespace Shared.Enumerations
{
[Flags]
public enum TaskStatusEnum
{
NotSet = 0,
Open = 1,
Canceled = 2,
Complete = 4,
OnHold = 8,
Inactive = 32,
All = Open | Canceled | Complete | OnHold | Inactive
}
}
これは、オープンまたは保留中のタスクを提供できるようにするためです。
TaskList activeTasks = taskListManager.TaskList.FindAll(target.Name, target.TaskType, (TaskStatusEnum.Open | TaskStatusEnum.OnHold));
もちろん、通常の列挙では、一度に 1 つのことしか設定できません。実際には、次のようなことができます。
[TestMethod]
public void checkEnumVals()
{
var ts = TaskStatusTestEnum.Open;
ts |= TaskStatusTestEnum.OnHold;
bool matchBoth = false;
if ((ts & TaskStatusTestEnum.OnHold) == TaskStatusTestEnum.OnHold && (ts & TaskStatusTestEnum.Open) == TaskStatusTestEnum.Open)
matchBoth = true;
Assert.IsTrue(matchBoth);
}
ただし、このようなことはお勧めしません。