Вы пропустили назначение значимых значений флагов, например:
[Flags]
public enum DisplayMode
{
None = 0,
Dim = 1,
Inverted = 2,
Parse = 4,
Italics = 8,
Bold = 16
}
Таким образом, каждое значение имеет отдельный бит в числовом представлении.
Если вы не доверяете своемуВозможность удваивать значения, вы можете использовать битовое смещение:
[Flags]
public enum DisplayMode
{
None = 0,
Dim = 1 << 0,
Inverted = 1 << 1,
Parse = 1 << 2,
Italics = 1 << 3,
Bold = 1 << 4
}
Из документации FlagsAttribute
:
Рекомендации для FlagsAttribute и Enum
Используйте пользовательский атрибут FlagsAttribute для перечисления только в том случае, если с числовым значением должна выполняться побитовая операция (И, ИЛИ, ИСКЛЮЧИТЕЛЬНОЕ ИЛИ).
Определите константы перечисления в степенях двух, то есть 1, 2, 4, 8 и т. Д.Это означает, что отдельные флаги в комбинированных константах перечисления не перекрываются.
...