Enum to string помогите

130
02 ноября 2019, 06:20
var profile = new UserInfo {NetUser = netUser, Flags = UserInfo.FlagList.Normal};
profile.SetFlag(UserInfo.FlagList.Online);
public void SetFlag(FlagList flag, bool state = true) { Flags = (state) ? Flags |= flag : Flags &= ~flag; }

Как мне перечисленные Enum-ы вывести как текст (Enum-ы в данном случае FlagList )?

Если через profile.Flags.ToString() то он возращает только последний - Online

public class UserInfo
    {
        [Flags]
        public enum FlagList
        {
            Normal,
            Online,
        }
        public FlagList Flags;
        public void SetFlag(FlagList flag, bool state = true) { Flags = (state) ? Flags |= flag : Flags &= ~flag; }
        public bool HasFlag(FlagList flag) { return (Flags & flag) == flag; }
        public void ToggleFlag(FlagList flag) { Flags ^= flag; }
    }
Answer 1

Проблема заключается в том, что по умолчанию значение для Normal - 0.

То есть, ты не можешь определить установлен этот флаг или нет. Поэтому кажется что ты установил только второй, которому присвоено следующее значение 1.

При работе с флагами лучше явно задавать каждое значение:

[Flags]
public enum FlagList
{
    Normal = 1,
    Online = 1<<1,
    // и т.д.
}

В этом случае сработает переопределенный ToString и после кода в вопросе выведется Normal, Online

READ ALSO
Не получается запустить Php Unit

Не получается запустить Php Unit

OpenServerУстановлен Composer, PhpUnit

126
Обновление статуса вебхука

Обновление статуса вебхука

Помогите разобраться с кодом PHPВыдает ответ - 405

146
Перемнные окружения и пароли БД

Перемнные окружения и пароли БД

Где то давно слышал, что в php безопаснее хранить логин и пароль от базы данных в переменных окружения ($_ENV), а не в самом php скриптеДействительно...

124
Передать токен из приложения к серверу

Передать токен из приложения к серверу

Установил FCM в AndroidВсё нормально

120