[Flags]
public enum Direction
{
None = 0x0000,
Left = 0x0001,
Right = 0x0002,
Up = 0x0004,
Down = 0x0008,
Forward = 0x0016,
Backward = 0x0032
}
Действительно запутался, я использую это перечисление в выражении if, например:
if ((enumValues & Direction.Forward) == Direction.Forward)
{
// do stuff
}
чтобы проверить, содержит ли он флаг внутри коллекции.
if ((enumValues & Direction.Right) == Direction.Forward)
{
// do stuff
}
Продолжает выполнение этого if ( Direction.Right )
кода, несмотря на то, что он не содержит флага Right внутри коллекции, я даже отлаживал его с перерывами, и значение не содержит Direction.Right
, но он все равно возвращает true и запускает фрагмент.
Я неправильно настроил свое перечисление или неправильно запрашиваю значения?
Обычно я не использую флаги, я просто подумал, что было бы неплохо их использовать.
enumValues
? - person er-sho   schedule 23.02.2019if ((enumValues & Direction.Right) == Direction.Forward)
- у вас там два разных значения. - person Wai Ha Lee   schedule 23.02.2019