CLR-声明具有“标志”属性的枚举

时间:2018-09-05 14:32:18

标签: c# enums attributes clr enum-flags

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

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

在C#中,如果要创建所选枚举的组合,我曾经在枚举减速之前添加了[Flags]属性。

与C ++ CLR中存在类似的东西吗?

2 个答案:

答案 0 :(得分:1)

C#中的some s = {"it is something"};仅表示 可以将枚举 视为位字段。

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

FlagsAttribute

public enum class Days { Sunday = 1, Monday = 2, Tuesday = 4, Wednesday = 8, Thursday = 16, Friday = 32, Saturday = 64 }; 不会自动使枚举值的幂为2。

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

答案 1 :(得分:0)

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

[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