Я собирался прокомментировать, но то, что сказал 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));
Конечно, с обычным перечислением вы можете установить только одно за раз. Вы могли бы сделать что-то вроде следующего.
[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);
}
Я бы не предложил что-то подобное.
как насчет 'switch'? – rocketboy
C# и java? у вас была такая же проблема на обоих языках? – Steve
Что вы хотите проверить точно? – Paniz