CLR - объявлять перечисление с атрибутом "Flags" - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть следующий Enum в CLR / CLI:

public enum class Days
{
    Sunday,
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday
};

В C #, если я хотел создать комбинацию выбранных перечислений, я использовал добавление атрибута [Flags] до замедления перечисления.

Существует ли что-нибудь подобное в C ++ CLR?

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

Вы можете использовать атрибут flags в C ++ / CLI следующим образом:

[System::Flags]
public enum class Days : int
{
    Sunday = 1,
    Monday = 2,
    Tuesday = 4,
    Wednesday = 8,
    Thursday = 16,
    Friday = 32,
    Saturday = 64
};

[Флаги] автоматически не дают значениям перечисления полномочия двух. Но это может потребоваться для некоторых инструментов статического анализа кода:

PVS Studio

Сонар Линт

0 голосов
/ 05 сентября 2018

FlagsAttribute в C # просто указывает , что перечисление может рассматриваться как битовое поле.

Что действительно важно, так это то, что вы правильно определяете значения перечисления, чтобы над ними могли выполняться побитовые операции AND, OR, NOT и XOR, т. Е. Каждому значению перечисления следует назначать следующую большую степень 2:

public enum class Days
{
    Sunday = 1,
    Monday = 2,
    Tuesday = 4,
    Wednesday = 8,
    Thursday = 16,
    Friday = 32,
    Saturday = 64
};

[Flags] не делает автоматически перечисляемые значения степенями двух.

Что означает атрибут Enum [Flags] в C #?

...