У меня есть перечисление флага ниже.Как сравнить флаги в C#?
[Flags]
public enum FlagTest
{
None = 0x0,
Flag1 = 0x1,
Flag2 = 0x2,
Flag3 = 0x4
}
Я не могу сделать утверждение if истинным.
FlagTest testItem = FlagTest.Flag1 | FlagTest.Flag2;
if (testItem == FlagTest.Flag1)
{
// Do something,
// however This is never true.
}
Как я могу это сделать?
Поправьте меня, если я ошибаюсь, это 0 уместно быть используется как значение флага? – Roylee 2013-01-17 16:11:44
@ Roylee: 0 приемлемо, и неплохо иметь флаг «None» или «Undefined», чтобы проверить отсутствие установленных флагов. Это отнюдь не требуется, но это хорошая практика. О важности, о которой нужно помнить, указал Леонид в его ответе. – Andy 2013-03-10 19:08:02
@Roylee Настоятельно рекомендуется Microsoft предоставить флаг «Нет» со значением нуля. См. Http://msdn.microsoft.com/en-us/library/vstudio/ms229058(v=vs.100).aspx – ThatMatthew 2013-04-17 19:27:27