CLR - 声明具有 "Flags" 属性的枚举

CLR - Declare enum with "Flags" attribute

我在 CLR/CLI 中有以下枚举:

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

在 C# 中,如果我想创建所选枚举的组合,我过去常常在枚举声明之前添加 [Flags] 属性。

C++ CLR 中是否存在与此类似的内容?

C#中的FlagsAttribute只是表示枚举可以当做位域。

真正重要的是您适当地定义枚举值,以便可以对它们执行 AND、OR、NOT 和 XOR 按位运算,即您应该为每个枚举值分配 2 的下一个更大的幂:

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

[Flags] 不会自动使枚举值成为 2 的幂。

What does the [Flags] Enum Attribute mean in C#?

您可以像这样在 C++/CLI 中使用标志属性:

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

[Flags] 不会自动使枚举值成为 2 的幂。但是一些静态代码分析工具可能需要它:

PVS Studio

Sonar Lint